/*===================== begin_copyright_notice ==================================

Copyright (c) 2022 Intel Corporation

Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


======================= end_copyright_notice ==================================*/

#include "../imf.h"
#pragma OPENCL FP_CONTRACT OFF
static __constant _iml_v2_dp_union_t __dpown_la_nolut_CoutTab[860] = {
    0x00000000, 0x3FF00000, /* RCP1[  0] = +1.000000000000e+00 */
    0x00000000, 0x3FEF07C0, /* RCP1[  1] = +9.696960449219e-01 */
    0x00000000, 0x3FEE1E00, /* RCP1[  2] = +9.411621093750e-01 */
    0x00000000, 0x3FED41C0, /* RCP1[  3] = +9.142761230469e-01 */
    0x00000000, 0x3FEC71C0, /* RCP1[  4] = +8.888854980469e-01 */
    0x00000000, 0x3FEBAD00, /* RCP1[  5] = +8.648681640625e-01 */
    0x00000000, 0x3FEAF280, /* RCP1[  6] = +8.421020507813e-01 */
    0x00000000, 0x3FEA41C0, /* RCP1[  7] = +8.205261230469e-01 */
    0x00000000, 0x3FE99980, /* RCP1[  8] = +7.999877929688e-01 */
    0x00000000, 0x3FE8F9C0, /* RCP1[  9] = +7.804870605469e-01 */
    0x00000000, 0x3FE86180, /* RCP1[ 10] = +7.619018554688e-01 */
    0x00000000, 0x3FE7D040, /* RCP1[ 11] = +7.441711425781e-01 */
    0x00000000, 0x3FE745C0, /* RCP1[ 12] = +7.272644042969e-01 */
    0x00000000, 0x3FE6C180, /* RCP1[ 13] = +7.111206054688e-01 */
    0x00000000, 0x3FE642C0, /* RCP1[ 14] = +6.956481933594e-01 */
    0x00000000, 0x3FE5C980, /* RCP1[ 15] = +6.808471679688e-01 */
    0x00000000, 0x3FE55540, /* RCP1[ 16] = +6.666564941406e-01 */
    0x00000000, 0x3FE4E600, /* RCP1[ 17] = +6.530761718750e-01 */
    0x00000000, 0x3FE47B00, /* RCP1[ 18] = +6.400146484375e-01 */
    0x00000000, 0x3FE41400, /* RCP1[ 19] = +6.274414062500e-01 */
    0x00000000, 0x3FE3B140, /* RCP1[ 20] = +6.153869628906e-01 */
    0x00000000, 0x3FE35200, /* RCP1[ 21] = +6.037597656250e-01 */
    0x00000000, 0x3FE2F680, /* RCP1[ 22] = +5.925903320313e-01 */
    0x00000000, 0x3FE29E40, /* RCP1[ 23] = +5.818176269531e-01 */
    0x00000000, 0x3FE24940, /* RCP1[ 24] = +5.714416503906e-01 */
    0x00000000, 0x3FE1F700, /* RCP1[ 25] = +5.614013671875e-01 */
    0x00000000, 0x3FE1A7C0, /* RCP1[ 26] = +5.517272949219e-01 */
    0x00000000, 0x3FE15B00, /* RCP1[ 27] = +5.423583984375e-01 */
    0x00000000, 0x3FE11100, /* RCP1[ 28] = +5.333251953125e-01 */
    0x00000000, 0x3FE0C980, /* RCP1[ 29] = +5.245971679688e-01 */
    0x00000000, 0x3FE08440, /* RCP1[ 30] = +5.161437988281e-01 */
    0x00000000, 0x3FE04100, /* RCP1[ 31] = +5.079345703125e-01 */
    0x00000000, 0x3FE00000, /* RCP1[ 32] = +5.000000000000e-01 */
    /* Table of L1HI[j], L1LO[j] */
    0x00000000, 0x00000000, /* L1HI[  0] = +0.000000000000e-01 */
    0x00000000, 0x00000000, /* L1LO[  0] = +0.000000000000e-01 */
    0xA01F0000, 0x3FA6BB01, /* L1HI[  1] = +4.439549522021e-02 */
    0x7439DB71, 0x3D3C995E, /* L1LO[  1] = +1.016044049030e-13 */
    0x4FF80000, 0x3FB66568, /* L1HI[  2] = +8.748485519754e-02 */
    0x8DA93FB0, 0x3D3084F2, /* L1LO[  2] = +5.868843569564e-14 */
    0x820EC000, 0x3FC08CD7, /* L1HI[  3] = +1.292981514976e-01 */
    0x11B40207, 0x3D3543C5, /* L1LO[  3] = +7.554748217812e-14 */
    0x64906000, 0x3FC5C048, /* L1HI[  4] = +1.699305048976e-01 */
    0x7E5F3668, 0x3D28C5D4, /* L1LO[  4] = +4.400528589634e-14 */
    0x032BE000, 0x3FCACF30, /* L1HI[  5] = +2.094478621946e-01 */
    0xDEBF9166, 0x3D2E3733, /* L1LO[  5] = +5.367375028889e-14 */
    0xE396E000, 0x3FCFBC44, /* L1HI[  6] = +2.479330168987e-01 */
    0x28665438, 0x3D47B3F9, /* L1LO[  6] = +1.684200910041e-13 */
    0x90D2B000, 0x3FD243A5, /* L1HI[  7] = +2.853788294112e-01 */
    0xE8E9D45D, 0x3D3C9B75, /* L1LO[  7] = +1.016334320207e-13 */
    0xA118D000, 0x3FD49AD4, /* L1HI[  8] = +3.219501088345e-01 */
    0x7302CCA6, 0x3D45CD37, /* L1LO[  8] = +1.549098793318e-13 */
    0x92EF1000, 0x3FD6E227, /* L1HI[  9] = +3.575533804799e-01 */
    0x0E7E9039, 0x3D314F24, /* L1LO[  9] = +6.149443240964e-14 */
    0x9E695000, 0x3FD91BD1, /* L1HI[ 10] = +3.923229262339e-01 */
    0xE4F6C667, 0x3D4DBB3E, /* L1LO[ 10] = +2.112545050340e-13 */
    0x273ED000, 0x3FDB4865, /* L1HI[ 11] = +4.262936480766e-01 */
    0x099E1F61, 0x3D4AB54A, /* L1LO[ 11] = +1.897728976534e-13 */
    0x20231000, 0x3FDD6799, /* L1HI[ 12] = +4.594481290662e-01 */
    0x96E87504, 0x3D18ED50, /* L1LO[ 12] = +2.213963319159e-14 */
    0x9E747000, 0x3FDF7A34, /* L1HI[ 13] = +4.918338344012e-01 */
    0x81D99120, 0x3D4A6E70, /* L1LO[ 13] = +1.878064226732e-13 */
    0x50CF0000, 0x3FE0C116, /* L1HI[ 14] = +5.235702112477e-01 */
    0xEB1152A5, 0x3D461752, /* L1LO[ 14] = +1.569667701192e-13 */
    0x6E8E9800, 0x3FE1BF42, /* L1HI[ 15] = +5.545971068684e-01 */
    0x6C055F56, 0x3D376AFF, /* L1LO[ 15] = +8.319730657207e-14 */
    0x1C354000, 0xBFDA8F9D, /* L1HI[ 16] = -4.150154853314e-01 */
    0x4F4F9854, 0xBD4604F5, /* L1LO[ 16] = -1.564570207124e-13 */
    0x8A043000, 0xBFD8A922, /* L1HI[ 17] = -3.853231761757e-01 */
    0xCF8DD884, 0xBD49BC20, /* L1LO[ 17] = -1.828572895053e-13 */
    0xE7AA4000, 0xBFD6CB99, /* L1HI[ 18] = -3.561768305162e-01 */
    0xD5A7002B, 0xBD412B5A, /* L1LO[ 18] = -1.219956031355e-13 */
    0x5D830000, 0xBFD4F69F, /* L1HI[ 19] = -3.275526440812e-01 */
    0xD24BAE46, 0xBD38F36D, /* L1LO[ 19] = -8.864338416218e-14 */
    0xF8B57000, 0xBFD32C15, /* L1HI[ 20] = -2.995657852932e-01 */
    0xE01D9232, 0xBD0D6EE2, /* L1LO[ 20] = -1.307094403587e-14 */
    0xD34FB000, 0xBFD16935, /* L1HI[ 21] = -2.720465243899e-01 */
    0x348D84A5, 0xBD2151C6, /* L1LO[ 21] = -3.076548904102e-14 */
    0x7E71A000, 0xBFCF5FAA, /* L1HI[ 22] = -2.451069943811e-01 */
    0x20C552C2, 0xBD3D1576, /* L1LO[ 22] = -1.033265339615e-13 */
    0x1D5BE000, 0xBFCBFC5C, /* L1HI[ 23] = -2.186389106134e-01 */
    0x0E42B538, 0xBD278490, /* L1LO[ 23] = -4.177604593924e-14 */
    0x0948A000, 0xBFC8A9AD, /* L1HI[ 24] = -1.926780982333e-01 */
    0x64F25A56, 0xBD4C89BA, /* L1LO[ 24] = -2.027746887852e-13 */
    0xFF6B0000, 0xBFC563AD, /* L1HI[ 25] = -1.671044823797e-01 */
    0x079422C3, 0xBD4D0837, /* L1LO[ 25] = -2.062854042970e-13 */
    0x02746000, 0xBFC22DF3, /* L1HI[ 26] = -1.420272600160e-01 */
    0xC2505D3D, 0xBD3048E3, /* L1LO[ 26] = -5.785496642520e-14 */
    0x92EE4000, 0xBFBE0894, /* L1HI[ 27] = -1.173184260099e-01 */
    0xFCD57F87, 0xBD405589, /* L1LO[ 27] = -1.160610222981e-13 */
    0x41A08000, 0xBFB7D493, /* L1HI[ 28] = -9.308739044400e-02 */
    0xBCF7AA55, 0xBD4EEEF8, /* L1LO[ 28] = -2.197956159693e-13 */
    0xCF5A4000, 0xBFB1BC75, /* L1HI[ 29] = -6.928192436521e-02 */
    0x139E8397, 0xBD4D7DB2, /* L1LO[ 29] = -2.095461474301e-13 */
    0xC1828000, 0xBFA778FD, /* L1HI[ 30] = -4.584496485882e-02 */
    0xF2AF5333, 0xBD34378A, /* L1LO[ 30] = -7.182508429095e-14 */
    0x317A0000, 0xBF97427D, /* L1HI[ 31] = -2.271457304460e-02 */
    0x4B03B094, 0xBD4700F1, /* L1LO[ 31] = -1.634509902670e-13 */
    0x00000000, 0x00000000, /* L1HI[ 32] = +0.000000000000e-01 */
    0x00000000, 0x00000000, /* L1LO[ 32] = +0.000000000000e-01 */
    /* Table of RCP2[j] */
    0x00000000, 0x3FF00000, /* RCP2[  0] = +1.000000000000e+00 */
    0x00000000, 0x3FEFF000, /* RCP2[  1] = +9.980468750000e-01 */
    0x00000000, 0x3FEFE000, /* RCP2[  2] = +9.960937500000e-01 */
    0x00000000, 0x3FEFD040, /* RCP2[  3] = +9.941711425781e-01 */
    0x00000000, 0x3FEFC080, /* RCP2[  4] = +9.922485351563e-01 */
    0x00000000, 0x3FEFB0C0, /* RCP2[  5] = +9.903259277344e-01 */
    0x00000000, 0x3FEFA100, /* RCP2[  6] = +9.884033203125e-01 */
    0x00000000, 0x3FEF9180, /* RCP2[  7] = +9.865112304688e-01 */
    0x00000000, 0x3FEF8200, /* RCP2[  8] = +9.846191406250e-01 */
    0x00000000, 0x3FEF7280, /* RCP2[  9] = +9.827270507813e-01 */
    0x00000000, 0x3FEF6300, /* RCP2[ 10] = +9.808349609375e-01 */
    0x00000000, 0x3FEF53C0, /* RCP2[ 11] = +9.789733886719e-01 */
    0x00000000, 0x3FEF4480, /* RCP2[ 12] = +9.771118164063e-01 */
    0x00000000, 0x3FEF3540, /* RCP2[ 13] = +9.752502441406e-01 */
    0x00000000, 0x3FEF2600, /* RCP2[ 14] = +9.733886718750e-01 */
    0x00000000, 0x3FF04540, /* RCP2[ 15] = +1.016906738281e+00 */
    0x00000000, 0x3FF04100, /* RCP2[ 16] = +1.015869140625e+00 */
    0x00000000, 0x3FF03D00, /* RCP2[ 17] = +1.014892578125e+00 */
    0x00000000, 0x3FF038C0, /* RCP2[ 18] = +1.013854980469e+00 */
    0x00000000, 0x3FF034C0, /* RCP2[ 19] = +1.012878417969e+00 */
    0x00000000, 0x3FF03080, /* RCP2[ 20] = +1.011840820313e+00 */
    0x00000000, 0x3FF02C80, /* RCP2[ 21] = +1.010864257813e+00 */
    0x00000000, 0x3FF02880, /* RCP2[ 22] = +1.009887695313e+00 */
    0x00000000, 0x3FF02440, /* RCP2[ 23] = +1.008850097656e+00 */
    0x00000000, 0x3FF02040, /* RCP2[ 24] = +1.007873535156e+00 */
    0x00000000, 0x3FF01C40, /* RCP2[ 25] = +1.006896972656e+00 */
    0x00000000, 0x3FF01840, /* RCP2[ 26] = +1.005920410156e+00 */
    0x00000000, 0x3FF01400, /* RCP2[ 27] = +1.004882812500e+00 */
    0x00000000, 0x3FF01000, /* RCP2[ 28] = +1.003906250000e+00 */
    0x00000000, 0x3FF00C00, /* RCP2[ 29] = +1.002929687500e+00 */
    0x00000000, 0x3FF00800, /* RCP2[ 30] = +1.001953125000e+00 */
    0x00000000, 0x3FF00400, /* RCP2[ 31] = +1.000976562500e+00 */
    0x00000000, 0x3FF00000, /* RCP2[ 32] = +1.000000000000e+00 */
    /* Table of L2HI[j], L2LO[j] */
    0x00000000, 0x00000000, /* L2HI[  0] = +0.000000000000e-01 */
    0x00000000, 0x00000000, /* L2LO[  0] = +0.000000000000e-01 */
    0xA4280000, 0x3F671B0E, /* L2HI[  1] = +2.820519062197e-03 */
    0x9876EF47, 0x3D497F68, /* L2LO[  1] = +1.811719823171e-13 */
    0xC0680000, 0x3F7720D9, /* L2HI[  2] = +5.646563140999e-03 */
    0x3778C7CC, 0x3D441AF5, /* L2LO[  2] = +1.428567785645e-13 */
    0x8A7A0000, 0x3F8145C6, /* L2HI[  3] = +8.433867550821e-03 */
    0x9AC06488, 0x3D44BDD1, /* L2LO[  3] = +1.473770763086e-13 */
    0x61D20000, 0x3F86FDF4, /* L2HI[  4] = +1.122656749271e-02 */
    0x46D9F6F7, 0x3D3C9EFC, /* L2LO[  4] = +1.016823494308e-13 */
    0x355C0000, 0x3F8CB8F9, /* L2HI[  5] = +1.402468389597e-02 */
    0xADFBB459, 0x3D3275C9, /* L2LO[  5] = +6.558348046614e-14 */
    0xEC350000, 0x3F913B6B, /* L2HI[  6] = +1.682823781198e-02 */
    0x4FC32ADB, 0x3D0F25B4, /* L2LO[  6] = +1.383217211270e-14 */
    0x7B760000, 0x3F941016, /* L2HI[  7] = +1.959262016817e-02 */
    0xA8ED5317, 0x3D3F880C, /* L2LO[  7] = +1.120221894777e-13 */
    0x317A0000, 0x3F96E625, /* L2HI[  8] = +2.236230959397e-02 */
    0x645614DB, 0x3D453F0E, /* L2LO[  8] = +1.509641361505e-13 */
    0x6D010000, 0x3F99BD99, /* L2HI[  9] = +2.513732650573e-02 */
    0x341A2DAB, 0x3D2CD686, /* L2LO[  9] = +5.122655239246e-14 */
    0x8ED00000, 0x3F9C9674, /* L2HI[ 10] = +2.791769143732e-02 */
    0x66D10B04, 0x3D4EF88D, /* L2LO[ 10] = +2.200615342759e-13 */
    0xD4200000, 0x3F9F64ED, /* L2HI[ 11] = +3.065845114907e-02 */
    0x828828DA, 0x3D4511C3, /* L2LO[ 11] = +1.497070165198e-13 */
    0x97920000, 0x3FA11A62, /* L2HI[ 12] = +3.340442753051e-02 */
    0xD7D436D6, 0x3D4D925C, /* L2LO[ 12] = +2.101197734774e-13 */
    0xFAD70000, 0x3FA282FD, /* L2HI[ 13] = +3.615564047823e-02 */
    0xA58B8D6E, 0x3D49EEE0, /* L2LO[ 13] = +1.842658671763e-13 */
    0xBFC20000, 0x3FA3EC49, /* L2HI[ 14] = +3.891211000246e-02 */
    0x2E0E0086, 0x3D4DEAC3, /* L2LO[ 14] = +2.125733595118e-13 */
    0x31230000, 0xBF98C493, /* L2HI[ 15] = -2.418737399489e-02 */
    0x5EFCABFA, 0xBD49AD07, /* L2LO[ 15] = -1.824381976916e-13 */
    0x317A0000, 0xBF97427D, /* L2HI[ 16] = -2.271457304460e-02 */
    0x4B03B094, 0xBD4700F1, /* L2LO[ 16] = -1.634509902670e-13 */
    0xEE910000, 0xBF95D6C0, /* L2HI[ 17] = -2.132703262419e-02 */
    0x535202A3, 0xBD4A5115, /* L2LO[ 17] = -1.869916250346e-13 */
    0xADB60000, 0xBF9453E6, /* L2HI[ 18] = -1.985130725143e-02 */
    0xE102F731, 0xBD415A44, /* L2LO[ 18] = -1.232977347555e-13 */
    0x57080000, 0xBF92E771, /* L2HI[ 19] = -1.846100896546e-02 */
    0x5EE9AD86, 0xBD4C7ED8, /* L2LO[ 19] = -2.024726275045e-13 */
    0x0D100000, 0xBF9163D2, /* L2HI[ 20] = -1.698234753349e-02 */
    0x664FE33F, 0xBD46E8B9, /* L2LO[ 20] = -1.627787964811e-13 */
    0xCBCC0000, 0xBF8FED45, /* L2HI[ 21] = -1.558928039731e-02 */
    0x43464056, 0xBD37F339, /* L2LO[ 21] = -8.508782127181e-14 */
    0xC5EA0000, 0xBF8D1232, /* L2HI[ 22] = -1.419486681448e-02 */
    0xB0BDC8DF, 0xBD17CF34, /* L2LO[ 22] = -2.114699326018e-14 */
    0x28680000, 0xBF8A08A8, /* L2HI[ 23] = -1.271182416258e-02 */
    0xF02B9CCF, 0xBD35A529, /* L2LO[ 23] = -7.689909571561e-14 */
    0x4CF00000, 0xBF872C1F, /* L2HI[ 24] = -1.131462529702e-02 */
    0x580FE573, 0xBD2B4934, /* L2LO[ 24] = -4.846959270555e-14 */
    0xA6F20000, 0xBF844EE0, /* L2HI[ 25] = -9.916071982161e-03 */
    0xFF314317, 0xBD24C8CB, /* L2LO[ 25] = -3.692044491436e-14 */
    0xDC1C0000, 0xBF8170EB, /* L2HI[ 26] = -8.516161589341e-03 */
    0x2CC5232F, 0xBD447DB0, /* L2LO[ 26] = -1.455970950231e-13 */
    0x97D40000, 0xBF7CC89F, /* L2HI[ 27] = -7.027266893829e-03 */
    0x90330E7B, 0xBD43AC9C, /* L2LO[ 27] = -1.397940534250e-13 */
    0x6D780000, 0xBF7709C4, /* L2HI[ 28] = -5.624549193726e-03 */
    0x56CDE925, 0xBD4563BA, /* L2LO[ 28] = -1.519819794190e-13 */
    0xCCF40000, 0xBF71497A, /* L2HI[ 29] = -4.220466317975e-03 */
    0xDDD3E770, 0xBD4F08E7, /* L2LO[ 29] = -2.205154317084e-13 */
    0xFF080000, 0xBF670F83, /* L2HI[ 30] = -2.815015606984e-03 */
    0x31D4676D, 0xBD33AB26, /* L2LO[ 30] = -6.987673214832e-14 */
    0x37400000, 0xBF571265, /* L2HI[ 31] = -1.408194392752e-03 */
    0xFD4FCA1D, 0xBD2FA2A0, /* L2LO[ 31] = -5.619552646295e-14 */
    0x00000000, 0x00000000, /* L2HI[ 32] = +0.000000000000e-01 */
    0x00000000, 0x00000000, /* L2LO[ 32] = +0.000000000000e-01 */
    /* Table of RCP3C[j] */
    0x40000000, 0x3FF71547, /* RCP3C[  0] = +1.442694902420e+00 */
    0x00000000, 0x3FF71519, /* RCP3C[  1] = +1.442650794983e+00 */
    0x00000000, 0x3FF714EB, /* RCP3C[  2] = +1.442606925964e+00 */
    0xC0000000, 0x3FF714BC, /* RCP3C[  3] = +1.442562818527e+00 */
    0x80000000, 0x3FF7148E, /* RCP3C[  4] = +1.442518711090e+00 */
    0x80000000, 0x3FF71460, /* RCP3C[  5] = +1.442474842072e+00 */
    0x40000000, 0x3FF71432, /* RCP3C[  6] = +1.442430734634e+00 */
    0x40000000, 0x3FF71404, /* RCP3C[  7] = +1.442386865616e+00 */
    0x00000000, 0x3FF713D6, /* RCP3C[  8] = +1.442342758179e+00 */
    0xC0000000, 0x3FF713A7, /* RCP3C[  9] = +1.442298650742e+00 */
    0xC0000000, 0x3FF71379, /* RCP3C[ 10] = +1.442254781723e+00 */
    0x80000000, 0x3FF7134B, /* RCP3C[ 11] = +1.442210674286e+00 */
    0x80000000, 0x3FF7131D, /* RCP3C[ 12] = +1.442166805267e+00 */
    0x40000000, 0x3FF712EF, /* RCP3C[ 13] = +1.442122697830e+00 */
    0x40000000, 0x3FF712C1, /* RCP3C[ 14] = +1.442078828812e+00 */
    0x00000000, 0x3FF71293, /* RCP3C[ 15] = +1.442034721375e+00 */
    0x00000000, 0x3FF71265, /* RCP3C[ 16] = +1.441990852356e+00 */
    0xC0000000, 0x3FF71236, /* RCP3C[ 17] = +1.441946744919e+00 */
    0xC0000000, 0x3FF71208, /* RCP3C[ 18] = +1.441902875900e+00 */
    0x80000000, 0x3FF711DA, /* RCP3C[ 19] = +1.441858768463e+00 */
    0x80000000, 0x3FF711AC, /* RCP3C[ 20] = +1.441814899445e+00 */
    0x80000000, 0x3FF7117E, /* RCP3C[ 21] = +1.441771030426e+00 */
    0x40000000, 0x3FF71150, /* RCP3C[ 22] = +1.441726922989e+00 */
    0x40000000, 0x3FF71122, /* RCP3C[ 23] = +1.441683053970e+00 */
    0x00000000, 0x3FF710F4, /* RCP3C[ 24] = +1.441638946533e+00 */
    0x00000000, 0x3FF710C6, /* RCP3C[ 25] = +1.441595077515e+00 */
    0x00000000, 0x3FF71098, /* RCP3C[ 26] = +1.441551208496e+00 */
    0xC0000000, 0x3FF71069, /* RCP3C[ 27] = +1.441507101059e+00 */
    0xC0000000, 0x3FF7103B, /* RCP3C[ 28] = +1.441463232040e+00 */
    0x80000000, 0x3FF7100D, /* RCP3C[ 29] = +1.441419124603e+00 */
    0x80000000, 0x3FF70FDF, /* RCP3C[ 30] = +1.441375255585e+00 */
    0x80000000, 0x3FF70FB1, /* RCP3C[ 31] = +1.441331386566e+00 */
    0x40000000, 0x3FF70F83, /* RCP3C[ 32] = +1.441287279129e+00 */
    0x40000000, 0x3FF70F55, /* RCP3C[ 33] = +1.441243410110e+00 */
    0x40000000, 0x3FF70F27, /* RCP3C[ 34] = +1.441199541092e+00 */
    0x40000000, 0x3FF70EF9, /* RCP3C[ 35] = +1.441155672073e+00 */
    0x00000000, 0x3FF70ECB, /* RCP3C[ 36] = +1.441111564636e+00 */
    0x00000000, 0x3FF70E9D, /* RCP3C[ 37] = +1.441067695618e+00 */
    0x00000000, 0x3FF70E6F, /* RCP3C[ 38] = +1.441023826599e+00 */
    0x00000000, 0x3FF70E41, /* RCP3C[ 39] = +1.440979957581e+00 */
    0xC0000000, 0x3FF70E12, /* RCP3C[ 40] = +1.440935850143e+00 */
    0xC0000000, 0x3FF70DE4, /* RCP3C[ 41] = +1.440891981125e+00 */
    0xC0000000, 0x3FF70DB6, /* RCP3C[ 42] = +1.440848112106e+00 */
    0xC0000000, 0x3FF70D88, /* RCP3C[ 43] = +1.440804243088e+00 */
    0xC0000000, 0x3FF70D5A, /* RCP3C[ 44] = +1.440760374069e+00 */
    0x80000000, 0x3FF70D2C, /* RCP3C[ 45] = +1.440716266632e+00 */
    0x80000000, 0x3FF70CFE, /* RCP3C[ 46] = +1.440672397614e+00 */
    0x80000000, 0x3FF70CD0, /* RCP3C[ 47] = +1.440628528595e+00 */
    0x80000000, 0x3FF70CA2, /* RCP3C[ 48] = +1.440584659576e+00 */
    0x80000000, 0x3FF70C74, /* RCP3C[ 49] = +1.440540790558e+00 */
    0x80000000, 0x3FF70C46, /* RCP3C[ 50] = +1.440496921539e+00 */
    0x80000000, 0x3FF70C18, /* RCP3C[ 51] = +1.440453052521e+00 */
    0x80000000, 0x3FF70BEA, /* RCP3C[ 52] = +1.440409183502e+00 */
    0x80000000, 0x3FF70BBC, /* RCP3C[ 53] = +1.440365314484e+00 */
    0x40000000, 0x3FF70B8E, /* RCP3C[ 54] = +1.440321207047e+00 */
    0x40000000, 0x3FF70B60, /* RCP3C[ 55] = +1.440277338028e+00 */
    0x40000000, 0x3FF70B32, /* RCP3C[ 56] = +1.440233469009e+00 */
    0x40000000, 0x3FF70B04, /* RCP3C[ 57] = +1.440189599991e+00 */
    0x40000000, 0x3FF70AD6, /* RCP3C[ 58] = +1.440145730972e+00 */
    0x40000000, 0x3FF70AA8, /* RCP3C[ 59] = +1.440101861954e+00 */
    0x40000000, 0x3FF70A7A, /* RCP3C[ 60] = +1.440057992935e+00 */
    0x80000000, 0x3FF71B53, /* RCP3C[ 61] = +1.444171428680e+00 */
    0x40000000, 0x3FF71B3C, /* RCP3C[ 62] = +1.444149255753e+00 */
    0x40000000, 0x3FF71B25, /* RCP3C[ 63] = +1.444127321243e+00 */
    0x00000000, 0x3FF71B0E, /* RCP3C[ 64] = +1.444105148315e+00 */
    0x00000000, 0x3FF71AF7, /* RCP3C[ 65] = +1.444083213806e+00 */
    0xC0000000, 0x3FF71ADF, /* RCP3C[ 66] = +1.444061040878e+00 */
    0xC0000000, 0x3FF71AC8, /* RCP3C[ 67] = +1.444039106369e+00 */
    0x80000000, 0x3FF71AB1, /* RCP3C[ 68] = +1.444016933441e+00 */
    0x80000000, 0x3FF71A9A, /* RCP3C[ 69] = +1.443994998932e+00 */
    0x40000000, 0x3FF71A83, /* RCP3C[ 70] = +1.443972826004e+00 */
    0x40000000, 0x3FF71A6C, /* RCP3C[ 71] = +1.443950891495e+00 */
    0x00000000, 0x3FF71A55, /* RCP3C[ 72] = +1.443928718567e+00 */
    0x00000000, 0x3FF71A3E, /* RCP3C[ 73] = +1.443906784058e+00 */
    0xC0000000, 0x3FF71A26, /* RCP3C[ 74] = +1.443884611130e+00 */
    0xC0000000, 0x3FF71A0F, /* RCP3C[ 75] = +1.443862676620e+00 */
    0x80000000, 0x3FF719F8, /* RCP3C[ 76] = +1.443840503693e+00 */
    0x80000000, 0x3FF719E1, /* RCP3C[ 77] = +1.443818569183e+00 */
    0x40000000, 0x3FF719CA, /* RCP3C[ 78] = +1.443796396255e+00 */
    0x40000000, 0x3FF719B3, /* RCP3C[ 79] = +1.443774461746e+00 */
    0x00000000, 0x3FF7199C, /* RCP3C[ 80] = +1.443752288818e+00 */
    0x00000000, 0x3FF71985, /* RCP3C[ 81] = +1.443730354309e+00 */
    0xC0000000, 0x3FF7196D, /* RCP3C[ 82] = +1.443708181381e+00 */
    0xC0000000, 0x3FF71956, /* RCP3C[ 83] = +1.443686246872e+00 */
    0x80000000, 0x3FF7193F, /* RCP3C[ 84] = +1.443664073944e+00 */
    0x80000000, 0x3FF71928, /* RCP3C[ 85] = +1.443642139435e+00 */
    0x40000000, 0x3FF71911, /* RCP3C[ 86] = +1.443619966507e+00 */
    0x40000000, 0x3FF718FA, /* RCP3C[ 87] = +1.443598031998e+00 */
    0x40000000, 0x3FF718E3, /* RCP3C[ 88] = +1.443576097488e+00 */
    0x00000000, 0x3FF718CC, /* RCP3C[ 89] = +1.443553924561e+00 */
    0x00000000, 0x3FF718B5, /* RCP3C[ 90] = +1.443531990051e+00 */
    0xC0000000, 0x3FF7189D, /* RCP3C[ 91] = +1.443509817123e+00 */
    0xC0000000, 0x3FF71886, /* RCP3C[ 92] = +1.443487882614e+00 */
    0x80000000, 0x3FF7186F, /* RCP3C[ 93] = +1.443465709686e+00 */
    0x80000000, 0x3FF71858, /* RCP3C[ 94] = +1.443443775177e+00 */
    0x80000000, 0x3FF71841, /* RCP3C[ 95] = +1.443421840668e+00 */
    0x40000000, 0x3FF7182A, /* RCP3C[ 96] = +1.443399667740e+00 */
    0x40000000, 0x3FF71813, /* RCP3C[ 97] = +1.443377733231e+00 */
    0x00000000, 0x3FF717FC, /* RCP3C[ 98] = +1.443355560303e+00 */
    0x00000000, 0x3FF717E5, /* RCP3C[ 99] = +1.443333625793e+00 */
    0xC0000000, 0x3FF717CD, /* RCP3C[100] = +1.443311452866e+00 */
    0xC0000000, 0x3FF717B6, /* RCP3C[101] = +1.443289518356e+00 */
    0xC0000000, 0x3FF7179F, /* RCP3C[102] = +1.443267583847e+00 */
    0x80000000, 0x3FF71788, /* RCP3C[103] = +1.443245410919e+00 */
    0x80000000, 0x3FF71771, /* RCP3C[104] = +1.443223476410e+00 */
    0x40000000, 0x3FF7175A, /* RCP3C[105] = +1.443201303482e+00 */
    0x40000000, 0x3FF71743, /* RCP3C[106] = +1.443179368973e+00 */
    0x40000000, 0x3FF7172C, /* RCP3C[107] = +1.443157434464e+00 */
    0x00000000, 0x3FF71715, /* RCP3C[108] = +1.443135261536e+00 */
    0x00000000, 0x3FF716FE, /* RCP3C[109] = +1.443113327026e+00 */
    0xC0000000, 0x3FF716E6, /* RCP3C[110] = +1.443091154099e+00 */
    0xC0000000, 0x3FF716CF, /* RCP3C[111] = +1.443069219589e+00 */
    0xC0000000, 0x3FF716B8, /* RCP3C[112] = +1.443047285080e+00 */
    0x80000000, 0x3FF716A1, /* RCP3C[113] = +1.443025112152e+00 */
    0x80000000, 0x3FF7168A, /* RCP3C[114] = +1.443003177643e+00 */
    0x80000000, 0x3FF71673, /* RCP3C[115] = +1.442981243134e+00 */
    0x40000000, 0x3FF7165C, /* RCP3C[116] = +1.442959070206e+00 */
    0x40000000, 0x3FF71645, /* RCP3C[117] = +1.442937135696e+00 */
    0x00000000, 0x3FF7162E, /* RCP3C[118] = +1.442914962769e+00 */
    0x00000000, 0x3FF71617, /* RCP3C[119] = +1.442893028259e+00 */
    0x00000000, 0x3FF71600, /* RCP3C[120] = +1.442871093750e+00 */
    0xC0000000, 0x3FF715E8, /* RCP3C[121] = +1.442848920822e+00 */
    0xC0000000, 0x3FF715D1, /* RCP3C[122] = +1.442826986313e+00 */
    0xC0000000, 0x3FF715BA, /* RCP3C[123] = +1.442805051804e+00 */
    0x80000000, 0x3FF715A3, /* RCP3C[124] = +1.442782878876e+00 */
    0x80000000, 0x3FF7158C, /* RCP3C[125] = +1.442760944366e+00 */
    0x80000000, 0x3FF71575, /* RCP3C[126] = +1.442739009857e+00 */
    0x40000000, 0x3FF7155E, /* RCP3C[127] = +1.442716836929e+00 */
    0x40000000, 0x3FF71547, /* RCP3C[128] = +1.442694902420e+00 */
    /* Table of L3HI[j], L3LO[j] */
    0x00000000, 0x00000000, /* L3HI[  0] = +0.000000000000e-01 */
    0x00000000, 0x00000000, /* L3LO[  0] = +0.000000000000e-01 */
    0x50000000, 0x3F072017, /* L3HI[  1] = +4.410811561684e-05 */
    0x641F4F36, 0x3D099925, /* L3LO[  1] = +1.136789631004e-14 */
    0x3B000000, 0x3F17102E, /* L3HI[  2] = +8.797914665593e-05 */
    0xC162D124, 0x3D120082, /* L3LO[  2] = +1.598898362090e-14 */
    0x0C800000, 0x3F215034, /* L3HI[  3] = +1.320899521033e-04 */
    0x09125FF4, 0x3D441EE7, /* L3LO[  3] = +1.429662633327e-13 */
    0x92000000, 0x3F27185C, /* L3HI[  4] = +1.762021065588e-04 */
    0x8BABF46F, 0x3CEECD1C, /* L3LO[  4] = +3.419622010134e-15 */
    0x5D000000, 0x3F2CD890, /* L3HI[  5] = +2.200771546086e-04 */
    0xF0BBF0CF, 0x3D3BEE60, /* L3LO[  5] = +9.923143797374e-14 */
    0xFF400000, 0x3F315067, /* L3HI[  6] = +2.641919993494e-04 */
    0x8A9648DD, 0x3D3FDBDF, /* L3LO[  6] = +1.131854777739e-13 */
    0x63400000, 0x3F34308D, /* L3HI[  7] = +3.080697235873e-04 */
    0xAEE1B670, 0x3D3681CB, /* L3LO[  7] = +7.996097724551e-14 */
    0xC2800000, 0x3F3714B8, /* L3HI[  8] = +3.521872590682e-04 */
    0xBF3D153E, 0x3D4102E6, /* L3LO[  8] = +1.208727938731e-13 */
    0xED400000, 0x3F39F8E9, /* L3HI[  9] = +3.963061437844e-04 */
    0x33794ABC, 0x3D365EF2, /* L3LO[  9] = +7.947734273383e-14 */
    0x93400000, 0x3F3CD920, /* L3HI[ 10] = +4.401878861700e-04 */
    0x3D384508, 0x3D4FDF0B, /* L3LO[ 10] = +2.264589599979e-13 */
    0x4D400000, 0x3F3FBD5D, /* L3HI[ 11] = +4.843094623084e-04 */
    0x782C348A, 0x3D19A166, /* L3LO[ 11] = +2.276443017143e-14 */
    0xB9400000, 0x3F414ECF, /* L3HI[ 12] = +5.281938815642e-04 */
    0x39DDE07F, 0x3D48ABA0, /* L3LO[ 12] = +1.752938317550e-13 */
    0xDDE00000, 0x3F42C0F3, /* L3HI[ 13] = +5.723181491248e-04 */
    0x9D5FD823, 0x3D435F8A, /* L3LO[ 13] = +1.376549281185e-13 */
    0xB0600000, 0x3F44311A, /* L3HI[ 14] = +6.162052457057e-04 */
    0x12458BEC, 0x3D47963A, /* L3LO[ 14] = +1.675944616781e-13 */
    0x9CE00000, 0x3F45A344, /* L3HI[ 15] = +6.603322051433e-04 */
    0x2C8C13FD, 0x3D47E151, /* L3LO[ 15] = +1.696786346424e-13 */
    0x2F600000, 0x3F471371, /* L3HI[ 16] = +7.042219792766e-04 */
    0xCB0BD4FA, 0x3D48D0BE, /* L3LO[ 16] = +1.763241021452e-13 */
    0xE4000000, 0x3F4885A0, /* L3HI[ 17] = +7.483516310458e-04 */
    0xDCE1A474, 0x3D39DB21, /* L3LO[ 17] = +9.185891320697e-14 */
    0x36A00000, 0x3F49F5D3, /* L3HI[ 18] = +7.922440829589e-04 */
    0x55660916, 0x3D489166, /* L3LO[ 18] = +1.745659100766e-13 */
    0xB3800000, 0x3F4B6808, /* L3HI[ 19] = +8.363764272872e-04 */
    0xC862A7D0, 0x3D3D7958, /* L3LO[ 19] = +1.047127219328e-13 */
    0xC6800000, 0x3F4CD840, /* L3HI[ 20] = +8.802715574348e-04 */
    0xD43B70F4, 0x3D4312BA, /* L3LO[ 20] = +1.355229761997e-13 */
    0xB7C00000, 0x3F4E487B, /* L3HI[ 21] = +9.241680231753e-04 */
    0x975E2C41, 0x3D46363F, /* L3LO[ 21] = +1.578250975309e-13 */
    0xDF600000, 0x3F4FBAB9, /* L3HI[ 22] = +9.683044033864e-04 */
    0x850FC6C3, 0x3D224E63, /* L3LO[ 22] = +3.251835432253e-14 */
    0x48A00000, 0x3F50957D, /* L3HI[ 23] = +1.012203547816e-03 */
    0x17A21AA6, 0x3D256896, /* L3LO[ 23] = +3.802920685382e-14 */
    0x40C00000, 0x3F514E9F, /* L3HI[ 24] = +1.056342621268e-03 */
    0xA4582824, 0x3D32AE5F, /* L3LO[ 24] = +6.636876605856e-14 */
    0x7A100000, 0x3F5206C2, /* L3HI[ 25] = +1.100244444615e-03 */
    0x84B0FD57, 0x3D45C3F8, /* L3LO[ 25] = +1.546532561655e-13 */
    0x22A00000, 0x3F52BEE7, /* L3HI[ 26] = +1.144147604009e-03 */
    0x4AAD1649, 0x3D4A525C, /* L3LO[ 26] = +1.870270747847e-13 */
    0x70800000, 0x3F53780D, /* L3HI[ 27] = +1.188290714708e-03 */
    0x275071DE, 0x3D1DEB18, /* L3LO[ 27] = +2.657282154694e-14 */
    0xF9900000, 0x3F543034, /* L3HI[ 28] = +1.232196553474e-03 */
    0xD5D75FB6, 0x3D48EAE4, /* L3LO[ 28] = +1.770498716513e-13 */
    0x2C000000, 0x3F54E95E, /* L3HI[ 29] = +1.276342358324e-03 */
    0xC1291B85, 0x3D3728C5, /* L3LO[ 29] = +8.227824641947e-14 */
    0x95B00000, 0x3F55A188, /* L3HI[ 30] = +1.320250876915e-03 */
    0xABECF0D7, 0x3D4F699A, /* L3LO[ 30] = +2.231993530520e-13 */
    0x6ED00000, 0x3F5659B4, /* L3HI[ 31] = +1.364160732237e-03 */
    0x8F2D1FA9, 0x3D22ED25, /* L3LO[ 31] = +3.361995901082e-14 */
    0xF7400000, 0x3F5712E1, /* L3HI[ 32] = +1.408310575243e-03 */
    0x8B30E580, 0x3D3445EF, /* L3LO[ 32] = +7.202482662555e-14 */
    0xB1100000, 0x3F57CB10, /* L3HI[ 33] = +1.452223110618e-03 */
    0xDC75FAC6, 0x3D431D52, /* L3LO[ 33] = +1.358170153139e-13 */
    0xDA500000, 0x3F588340, /* L3HI[ 34] = +1.496136982723e-03 */
    0xA135BD69, 0x3D3FFBCB, /* L3LO[ 34] = +1.136284875722e-13 */
    0x73000000, 0x3F593B72, /* L3HI[ 35] = +1.540052191558e-03 */
    0x2D63E5DB, 0x3D387100, /* L3LO[ 35] = +8.683332792525e-14 */
    0xC3200000, 0x3F59F4A5, /* L3HI[ 36] = +1.584207417636e-03 */
    0x1C0BB062, 0x3D45AFDD, /* L3LO[ 36] = +1.540951729882e-13 */
    0x3CC00000, 0x3F5AACDA, /* L3HI[ 37] = +1.628125307434e-03 */
    0xDCD040AE, 0x3D41914F, /* L3LO[ 37] = +1.248254822588e-13 */
    0x25E00000, 0x3F5B6510, /* L3HI[ 38] = +1.672044534189e-03 */
    0xDB245B1F, 0x3D3E7387, /* L3LO[ 38] = +1.081847207317e-13 */
    0x7E800000, 0x3F5C1D47, /* L3HI[ 39] = +1.715965097901e-03 */
    0x593D6B3F, 0x3D4A1E1B, /* L3LO[ 39] = +1.855767437065e-13 */
    0x96C00000, 0x3F5CD680, /* L3HI[ 40] = +1.760125708643e-03 */
    0xCC31FC26, 0x3CEA7D5C, /* L3LO[ 40] = +2.940947177963e-15 */
    0xD0800000, 0x3F5D8EBA, /* L3HI[ 41] = +1.804048954000e-03 */
    0x762A3069, 0x3D2BEFBC, /* L3LO[ 41] = +4.962513856824e-14 */
    0x79D00000, 0x3F5E46F6, /* L3HI[ 42] = +1.847973536542e-03 */
    0x952BE02C, 0x3D4D39FF, /* L3LO[ 42] = +2.076671715125e-13 */
    0x92D00000, 0x3F5EFF33, /* L3HI[ 43] = +1.891899456723e-03 */
    0x3B1A1CB4, 0x3D3D3437, /* L3LO[ 43] = +1.037533357225e-13 */
    0x1B700000, 0x3F5FB772, /* L3HI[ 44] = +1.935826714316e-03 */
    0x57218470, 0x3D2A49F2, /* L3LO[ 44] = +4.669838572788e-14 */
    0x36D80000, 0x3F603859, /* L3HI[ 45] = +1.979994055318e-03 */
    0x602BA3B5, 0x3D43ADB6, /* L3LO[ 45] = +1.398246075852e-13 */
    0xEBD00000, 0x3F609479, /* L3HI[ 46] = +2.023923995239e-03 */
    0x0591EE13, 0x3D4A6056, /* L3LO[ 46] = +1.874149730544e-13 */
    0x58A80000, 0x3F60F09B, /* L3HI[ 47] = +2.067855273026e-03 */
    0x4FAFF44B, 0x3D343EEC, /* L3LO[ 47] = +7.192750688018e-14 */
    0x7D580000, 0x3F614CBD, /* L3HI[ 48] = +2.111787888452e-03 */
    0x130DF139, 0x3D3CC4C6, /* L3LO[ 48] = +1.022067670532e-13 */
    0x59E80000, 0x3F61A8E0, /* L3HI[ 49] = +2.155721841746e-03 */
    0x9380107F, 0x3D42A0AD, /* L3LO[ 49] = +1.323574037017e-13 */
    0xEE600000, 0x3F620503, /* L3HI[ 50] = +2.199657133133e-03 */
    0xB9035A2A, 0x3D12915A, /* L3LO[ 50] = +1.649151088459e-14 */
    0x3AB80000, 0x3F626128, /* L3HI[ 51] = +2.243593762387e-03 */
    0x20CAACA3, 0x3D31DDED, /* L3LO[ 51] = +6.347597838479e-14 */
    0x3EF80000, 0x3F62BD4D, /* L3HI[ 52] = +2.287531729735e-03 */
    0x281079C7, 0x3D41EF6E, /* L3LO[ 52] = +1.274377908432e-13 */
    0xFB280000, 0x3F631972, /* L3HI[ 53] = +2.331471035404e-03 */
    0x6B98497F, 0x3D31986B, /* L3LO[ 53] = +6.251137955212e-14 */
    0xA5400000, 0x3F637619, /* L3HI[ 54] = +2.375650490649e-03 */
    0x91F2B430, 0x3D4C3697, /* L3LO[ 54] = +2.004672003603e-13 */
    0xD2500000, 0x3F63D240, /* L3HI[ 55] = +2.419592480237e-03 */
    0xCE1C0762, 0x3D40ECA7, /* L3LO[ 55] = +1.202553470339e-13 */
    0xB7500000, 0x3F642E68, /* L3HI[ 56] = +2.463535808147e-03 */
    0x073B1E2E, 0x3D45FA86, /* L3LO[ 56] = +1.561673997851e-13 */
    0x54480000, 0x3F648A91, /* L3HI[ 57] = +2.507480474605e-03 */
    0x05A622FD, 0x3D46D9E9, /* L3LO[ 57] = +1.623676260789e-13 */
    0xA9380000, 0x3F64E6BA, /* L3HI[ 58] = +2.551426479613e-03 */
    0x4B55A072, 0x3D4F04CC, /* L3LO[ 58] = +2.204014200178e-13 */
    0xB6280000, 0x3F6542E4, /* L3HI[ 59] = +2.595373823397e-03 */
    0x16094E0E, 0x3D49F570, /* L3LO[ 59] = +1.844479523629e-13 */
    0x7B180000, 0x3F659F0F, /* L3HI[ 60] = +2.639322505956e-03 */
    0x616CF239, 0x3D432659, /* L3LO[ 60] = +1.360675223285e-13 */
    0x69800000, 0xBF582DD5, /* L3HI[ 61] = -1.475771341575e-03 */
    0x3ED708F7, 0xBD3AB541, /* L3LO[ 61] = -9.488597220597e-14 */
    0x91900000, 0xBF57D0ED, /* L3HI[ 62] = -1.453620911207e-03 */
    0x7B358E46, 0xBD4135C6, /* L3LO[ 62] = -1.222848299710e-13 */
    0x1B300000, 0xBF577505, /* L3HI[ 63] = -1.431708323025e-03 */
    0xF6ED6FDE, 0xBCFEF3C0, /* L3LO[ 63] = -6.872760839444e-15 */
    0x89400000, 0xBF57181C, /* L3HI[ 64] = -1.409557215993e-03 */
    0x5AF7807F, 0xBD46A455, /* L3LO[ 64] = -1.608805705126e-13 */
    0x5AE00000, 0xBF56BC33, /* L3HI[ 65] = -1.387643958424e-03 */
    0x919C892D, 0xBD452637, /* L3LO[ 65] = -1.502747111638e-13 */
    0x0F000000, 0xBF565F4A, /* L3HI[ 66] = -1.365492174955e-03 */
    0x806E8ED0, 0xBD46D380, /* L3LO[ 66] = -1.621897605029e-13 */
    0x28A00000, 0xBF560360, /* L3HI[ 67] = -1.343578247997e-03 */
    0xFEDC7D6B, 0xBD4E545E, /* L3LO[ 67] = -2.155045885181e-13 */
    0x22D00000, 0xBF55A676, /* L3HI[ 68] = -1.321425788092e-03 */
    0xFDAB27BC, 0xBD28C45A, /* L3LO[ 68] = -4.399505366387e-14 */
    0x84700000, 0xBF554A8B, /* L3HI[ 69] = -1.299511191746e-03 */
    0x94F1D540, 0xBD40EFC0, /* L3LO[ 69] = -1.203413000560e-13 */
    0xC4900000, 0xBF54EDA0, /* L3HI[ 70] = -1.277358054949e-03 */
    0x6E5D7E55, 0xBD492AA1, /* L3LO[ 70] = -1.788189205123e-13 */
    0x6E400000, 0xBF5491B5, /* L3HI[ 71] = -1.255442789443e-03 */
    0xAE3A4995, 0xBD065C31, /* L3LO[ 71] = -9.929893825175e-15 */
    0xF4600000, 0xBF5434C9, /* L3HI[ 72] = -1.233288975982e-03 */
    0x90B30C51, 0xBD20B591, /* L3LO[ 72] = -2.968159478053e-14 */
    0xE6000000, 0xBF53D8DD, /* L3HI[ 73] = -1.211373040860e-03 */
    0x5C64292C, 0xBD208E1F, /* L3LO[ 73] = -2.940788240375e-14 */
    0xB2100000, 0xBF537BF1, /* L3HI[ 74] = -1.189218550508e-03 */
    0xF606F2E6, 0xBD4BA65D, /* L3LO[ 74] = -1.964641514842e-13 */
    0xEBB00000, 0xBF532004, /* L3HI[ 75] = -1.167301945998e-03 */
    0x1A593CA0, 0xBD3B2BD5, /* L3LO[ 75] = -9.653156653602e-14 */
    0xFDC00000, 0xBF52C317, /* L3HI[ 76] = -1.145146778981e-03 */
    0xF5360F7D, 0xBD440246, /* L3LO[ 76] = -1.421717515694e-13 */
    0x7F500000, 0xBF52672A, /* L3HI[ 77] = -1.123229504856e-03 */
    0x7BBFCA47, 0xBD422981, /* L3LO[ 77] = -1.290497096549e-13 */
    0xD7600000, 0xBF520A3C, /* L3HI[ 78] = -1.101073661175e-03 */
    0xCF30F123, 0xBD0AD92A, /* L3LO[ 78] = -1.192304453776e-14 */
    0xA0E00000, 0xBF51AE4E, /* L3HI[ 79] = -1.079155717434e-03 */
    0x693830AD, 0xBD292A75, /* L3LO[ 79] = -4.470353696087e-14 */
    0x3ED00000, 0xBF515160, /* L3HI[ 80] = -1.056999196635e-03 */
    0xE0391426, 0xBD49146E, /* L3LO[ 80] = -1.782028166384e-13 */
    0x50400000, 0xBF50F571, /* L3HI[ 81] = -1.035080583279e-03 */
    0x57002344, 0xBD4E6549, /* L3LO[ 81] = -2.159740853872e-13 */
    0x34300000, 0xBF509882, /* L3HI[ 82] = -1.012923385815e-03 */
    0x8F311F09, 0xBD3D4587, /* L3LO[ 82] = -1.039936127307e-13 */
    0x8D900000, 0xBF503C92, /* L3HI[ 83] = -9.910041028434e-04 */
    0x28FE4EA6, 0xBD3DCA96, /* L3LO[ 83] = -1.058401500194e-13 */
    0x6EC00000, 0xBF4FBF45, /* L3HI[ 84] = -9.688462282611e-04 */
    0x0F0A4C7F, 0xBD46C434, /* L3LO[ 84] = -1.617651389090e-13 */
    0xB1600000, 0xBF4F0764, /* L3HI[ 85] = -9.469262756738e-04 */
    0x4F8F13F5, 0xBD386C45, /* L3LO[ 85] = -8.676768671920e-14 */
    0x90E00000, 0xBF4E4D83, /* L3HI[ 86] = -9.247677242001e-04 */
    0x4F099D6A, 0xBD279073, /* L3LO[ 86] = -4.185853347804e-14 */
    0x63400000, 0xBF4D95A1, /* L3HI[ 87] = -9.028471017700e-04 */
    0x2BF804AC, 0xBD358615, /* L3LO[ 87] = -7.646775854410e-14 */
    0x7E800000, 0xBF4CDDBE, /* L3HI[ 88] = -8.809261462375e-04 */
    0xEDA75E42, 0xBD43F2DC, /* L3LO[ 88] = -1.417439221915e-13 */
    0x30A00000, 0xBF4C23DB, /* L3HI[ 89] = -8.587665809046e-04 */
    0xD23862D0, 0xBD4EF6F7, /* L3LO[ 89] = -2.200175611549e-13 */
    0xDBC00000, 0xBF4B6BF6, /* L3HI[ 90] = -8.368449557565e-04 */
    0x2300F78C, 0xBD3DE7D1, /* L3LO[ 90] = -1.062458029939e-13 */
    0x19A00000, 0xBF4AB212, /* L3HI[ 91] = -8.146847133048e-04 */
    0xBB645928, 0xBD4D3C99, /* L3LO[ 91] = -2.077393955642e-13 */
    0x54800000, 0xBF49FA2C, /* L3HI[ 92] = -7.927624183139e-04 */
    0xADF18185, 0xBD3C87D4, /* L3LO[ 92] = -1.013610137374e-13 */
    0x1E200000, 0xBF494046, /* L3HI[ 93] = -7.706014987434e-04 */
    0x1A0618B0, 0xBD49FE5A, /* L3LO[ 93] = -1.846953689875e-13 */
    0xE8C00000, 0xBF48885E, /* L3HI[ 94] = -7.486785339097e-04 */
    0xAAEEF6A6, 0xBD2934A5, /* L3LO[ 94] = -4.477423390025e-14 */
    0xFC200000, 0xBF47D076, /* L3HI[ 95] = -7.267552357462e-04 */
    0xECBB5462, 0xBD39CFC0, /* L3LO[ 95] = -9.170100251699e-14 */
    0x98600000, 0xBF47168E, /* L3HI[ 96] = -7.045933023164e-04 */
    0xBFA1C16B, 0xBD36F34E, /* L3LO[ 96] = -8.153627233901e-14 */
    0x3B800000, 0xBF465EA5, /* L3HI[ 97] = -6.826693343100e-04 */
    0x9088CA01, 0xBD22ED1C, /* L3LO[ 97] = -3.361971520912e-14 */
    0x63600000, 0xBF45A4BB, /* L3HI[ 98] = -6.605067235341e-04 */
    0x2D6DE9B5, 0xBD423320, /* L3LO[ 98] = -1.293167154802e-13 */
    0x96200000, 0xBF44ECD0, /* L3HI[ 99] = -6.385820854575e-04 */
    0x10D84808, 0xBD485871, /* L3LO[ 99] = -1.729850058552e-13 */
    0x49C00000, 0xBF4432E5, /* L3HI[100] = -6.164187975628e-04 */
    0x5992900A, 0xBD3DC614, /* L3LO[100] = -1.057776018411e-13 */
    0x0C200000, 0xBF437AF9, /* L3HI[101] = -5.944934894160e-04 */
    0xF611F4F2, 0xBD4C28B1, /* L3LO[101] = -2.000814836307e-13 */
    0x17600000, 0xBF42C30C, /* L3HI[102] = -5.725678481667e-04 */
    0x12496DA4, 0xBD49B472, /* L3LO[102] = -1.826440552004e-13 */
    0x9D800000, 0xBF42091E, /* L3HI[103] = -5.504035461854e-04 */
    0xB07B63E5, 0xBD22545F, /* L3LO[103] = -3.255988386305e-14 */
    0x38600000, 0xBF415130, /* L3HI[104] = -5.284772348659e-04 */
    0x6B4DAA19, 0xBCF3FC74, /* L3LO[104] = -4.437817094985e-15 */
    0x4A000000, 0xBF409741, /* L3HI[105] = -5.063122553111e-04 */
    0x9F7943AC, 0xBD2819AD, /* L3LO[105] = -4.281074255253e-14 */
    0xE8C00000, 0xBF3FBEA2, /* L3HI[106] = -4.843852736940e-04 */
    0x05018F01, 0xBD4ACC92, /* L3LO[106] = -1.904190801951e-13 */
    0xCF400000, 0xBF3E4EC1, /* L3HI[107] = -4.624579589745e-04 */
    0x5DECAD9C, 0xBD48B028, /* L3LO[107] = -1.754196144780e-13 */
    0x97400000, 0xBF3CDADF, /* L3HI[108] = -4.402919651056e-04 */
    0x63115207, 0xBD4CA2DD, /* L3LO[108] = -2.034723720874e-13 */
    0x9D000000, 0xBF3B6AFB, /* L3HI[109] = -4.183639803159e-04 */
    0xA7FC9363, 0xBD354003, /* L3LO[109] = -7.549536387739e-14 */
    0x7C000000, 0xBF39F716, /* L3HI[110] = -3.961973088735e-04 */
    0x407A7831, 0xBD4A8AE0, /* L3LO[110] = -1.885956941689e-13 */
    0xA0C00000, 0xBF38872F, /* L3HI[111] = -3.742686537862e-04 */
    0x91A8939D, 0xBD42DD8B, /* L3LO[111] = -1.340468067468e-13 */
    0x57000000, 0xBF371747, /* L3HI[112] = -3.523396653691e-04 */
    0x2F243D55, 0xBD3A4925, /* L3LO[112] = -9.338564991542e-14 */
    0xDAC00000, 0xBF35A35D, /* L3HI[113] = -3.301719796127e-04 */
    0x22A2581B, 0xBD2741DF, /* L3LO[113] = -4.131328350411e-14 */
    0xB0000000, 0xBF343372, /* L3HI[114] = -3.082423208980e-04 */
    0x3C22E0D2, 0xBD0CAB75, /* L3LO[114] = -1.273193000483e-14 */
    0x16800000, 0xBF32C386, /* L3HI[115] = -2.863123286261e-04 */
    0x5FC1D4DD, 0xBD4B6E11, /* L3LO[115] = -1.949015356714e-13 */
    0x3EC00000, 0xBF314F98, /* L3HI[116] = -2.641436283284e-04 */
    0x97121E28, 0xBD3F929A, /* L3LO[116] = -1.121686614100e-13 */
    0x89000000, 0xBF2FBF51, /* L3HI[117] = -2.422129659863e-04 */
    0x806FDBDA, 0xBD13EA1E, /* L3LO[117] = -1.768765393627e-14 */
    0x07000000, 0xBF2CD770, /* L3HI[118] = -2.200435878876e-04 */
    0x51E95ECB, 0xBD370EB1, /* L3LO[118] = -8.191631617640e-14 */
    0x50000000, 0xBF29F78B, /* L3HI[119] = -1.981122550205e-04 */
    0xFF247507, 0xBD418759, /* L3LO[119] = -1.245490252437e-13 */
    0xBC000000, 0xBF2717A3, /* L3HI[120] = -1.761805888236e-04 */
    0xC6C6F140, 0xBD3C0D6B, /* L3LO[120] = -9.966223682223e-14 */
    0x82800000, 0xBF242FB9, /* L3HI[121] = -1.540101959563e-04 */
    0xB8D3C162, 0xBD4CF2EF, /* L3LO[121] = -2.056948060211e-13 */
    0x2C800000, 0xBF214FCC, /* L3HI[122] = -1.320778594618e-04 */
    0x12CFE97E, 0xBD206CE3, /* L3LO[122] = -2.917726481117e-14 */
    0xF1000000, 0xBF1CDFB7, /* L3HI[123] = -1.101451891827e-04 */
    0x1056AF68, 0xBD4D7734, /* L3LO[123] = -2.093659516397e-13 */
    0x10000000, 0xBF170FD2, /* L3HI[124] = -8.797378177405e-05 */
    0x29329AEF, 0xBD24CAA4, /* L3LO[124] = -3.693324294748e-14 */
    0x24000000, 0xBF114FE6, /* L3HI[125] = -6.604044119740e-05 */
    0x06B71311, 0xBCF284C3, /* L3LO[125] = -4.111955412638e-15 */
    0xFA000000, 0xBF071FE8, /* L3HI[126] = -4.410676706357e-05 */
    0xDD98569A, 0xBD33BB0C, /* L3LO[126] = -7.009740366316e-14 */
    0xAC000000, 0xBEF6FFF4, /* L3HI[127] = -2.193434443143e-05 */
    0x0B7407C7, 0xBD4D54D7, /* L3LO[127] = -2.084121769195e-13 */
    0x00000000, 0x00000000, /* L3HI[128] = +0.000000000000e-01 */
    0x00000000, 0x00000000, /* L3LO[128] = +0.000000000000e-01 */
    /* Table of THI[j], TLO[j] */
    0x00000000, 0x3FF00000, /* THI[  0] = +1.000000000000e+00 */
    0x00000000, 0x00000000, /* TLO[  0] = +0.000000000000e-01 */
    0xA9FB3335, 0x3FF0163D, /* THI[  1] = +1.005429901113e+00 */
    0x9AB8CDB7, 0x3C9B6129, /* TLO[  1] = +9.499186535455e-17 */
    0x3E778061, 0x3FF02C9A, /* THI[  2] = +1.010889286052e+00 */
    0x535B085D, 0xBC719083, /* TLO[  2] = -1.523477860337e-17 */
    0xE86E7F85, 0x3FF04315, /* THI[  3] = +1.016378314911e+00 */
    0x1977C96E, 0xBC90A31C, /* TLO[  3] = -5.772170073200e-17 */
    0xD3158574, 0x3FF059B0, /* THI[  4] = +1.021897148654e+00 */
    0xA475B465, 0x3C8D73E2, /* TLO[  4] = +5.109225028973e-17 */
    0x29DDF6DE, 0x3FF0706B, /* THI[  5] = +1.027445949119e+00 */
    0xE2B13C26, 0xBC8C91DF, /* TLO[  5] = -4.956074174645e-17 */
    0x18759BC8, 0x3FF08745, /* THI[  6] = +1.033024879021e+00 */
    0x4BB284FF, 0x3C6186BE, /* TLO[  6] = +7.600838874027e-18 */
    0xCAC6F383, 0x3FF09E3E, /* THI[  7] = +1.038634101961e+00 */
    0x18316135, 0x3C914878, /* TLO[  7] = +5.996273788853e-17 */
    0x6CF9890F, 0x3FF0B558, /* THI[  8] = +1.044273782427e+00 */
    0x4ADC610A, 0x3C98A62E, /* TLO[  8] = +8.551889705538e-17 */
    0x2B7247F7, 0x3FF0CC92, /* THI[  9] = +1.049944085801e+00 */
    0x16E24F71, 0x3C901EDC, /* TLO[  9] = +5.592937848127e-17 */
    0x32D3D1A2, 0x3FF0E3EC, /* THI[ 10] = +1.055645178361e+00 */
    0x27C57B52, 0x3C403A17, /* TLO[ 10] = +1.759325738772e-18 */
    0xAFFED31B, 0x3FF0FB66, /* THI[ 11] = +1.061377227289e+00 */
    0xC44EBD7B, 0xBC6B9BED, /* TLO[ 11] = -1.197353708537e-17 */
    0xD0125B51, 0x3FF11301, /* THI[ 12] = +1.067140400677e+00 */
    0x39449B39, 0xBC96C510, /* TLO[ 12] = -7.899853966842e-17 */
    0xC06C31CC, 0x3FF12ABD, /* THI[ 13] = +1.072934867526e+00 */
    0xB36CA5C7, 0xBC51B514, /* TLO[ 13] = -3.839668843359e-18 */
    0xAEA92DE0, 0x3FF1429A, /* THI[ 14] = +1.078760797757e+00 */
    0x9AF1369E, 0xBC932FBF, /* TLO[ 14] = -6.656660436057e-17 */
    0xC8A58E51, 0x3FF15A98, /* THI[ 15] = +1.084618362213e+00 */
    0xB9EEAB09, 0x3C82406A, /* TLO[ 15] = +3.166152845816e-17 */
    0x3C7D517B, 0x3FF172B8, /* THI[ 16] = +1.090507732665e+00 */
    0xB9D78A75, 0xBC819041, /* TLO[ 16] = -3.046782079812e-17 */
    0x388C8DEA, 0x3FF18AF9, /* THI[ 17] = +1.096429081816e+00 */
    0xD1970F6B, 0xBC911023, /* TLO[ 17] = -5.919933484449e-17 */
    0xEB6FCB75, 0x3FF1A35B, /* THI[ 18] = +1.102382583308e+00 */
    0x7B4968E4, 0x3C8E5B4C, /* TLO[ 18] = +5.266036871571e-17 */
    0x84045CD4, 0x3FF1BBE0, /* THI[ 19] = +1.108368411724e+00 */
    0x352EF607, 0xBC995386, /* TLO[ 19] = -8.786813845181e-17 */
    0x3168B9AA, 0x3FF1D487, /* THI[ 20] = +1.114386742596e+00 */
    0x00A2643C, 0x3C9E016E, /* TLO[ 20] = +1.041027845685e-16 */
    0x22FCD91D, 0x3FF1ED50, /* THI[ 21] = +1.120437752410e+00 */
    0x027BB78B, 0xBC91DF98, /* TLO[ 21] = -6.201085906554e-17 */
    0x88628CD6, 0x3FF2063B, /* THI[ 22] = +1.126521618608e+00 */
    0x814A8494, 0x3C8DC775, /* TLO[ 22] = +5.165856758795e-17 */
    0x917DDC96, 0x3FF21F49, /* THI[ 23] = +1.132638519599e+00 */
    0x9494A5ED, 0x3C82A97E, /* TLO[ 23] = +3.237356166738e-17 */
    0x6E756238, 0x3FF2387A, /* THI[ 24] = +1.138788634757e+00 */
    0xB6C70572, 0x3C99B07E, /* TLO[ 24] = +8.912812676025e-17 */
    0x4FB2A63F, 0x3FF251CE, /* THI[ 25] = +1.144972144432e+00 */
    0xBEF4F4A4, 0x3C8AC155, /* TLO[ 25] = +4.641289892170e-17 */
    0x65E27CDD, 0x3FF26B45, /* THI[ 26] = +1.151189229953e+00 */
    0x9940E9D9, 0x3C82BD33, /* TLO[ 26] = +3.250710218864e-17 */
    0xE1F56381, 0x3FF284DF, /* THI[ 27] = +1.157440073634e+00 */
    0x8C3F0D7D, 0xBC9A4C3A, /* TLO[ 27] = -9.123871231134e-17 */
    0xF51FDEE1, 0x3FF29E9D, /* THI[ 28] = +1.163724858778e+00 */
    0xAFAD1255, 0x3C8612E8, /* TLO[ 28] = +3.829204836924e-17 */
    0xD0DAD990, 0x3FF2B87F, /* THI[ 29] = +1.170043769683e+00 */
    0xD6381AA3, 0xBC410ADC, /* TLO[ 29] = -1.847744201790e-18 */
    0xA6E4030B, 0x3FF2D285, /* THI[ 30] = +1.176396991650e+00 */
    0x54DB41D4, 0x3C900247, /* TLO[ 30] = +5.554203254218e-17 */
    0xA93E2F56, 0x3FF2ECAF, /* THI[ 31] = +1.182784710984e+00 */
    0x45D52383, 0x3C71CA0F, /* TLO[ 31] = +1.542975430079e-17 */
    0x0A31B715, 0x3FF306FE, /* THI[ 32] = +1.189207115003e+00 */
    0xD23182E4, 0x3C86F46A, /* TLO[ 32] = +3.982015231466e-17 */
    0xFC4CD831, 0x3FF32170, /* THI[ 33] = +1.195664392040e+00 */
    0x8E18047C, 0x3C8A9CE7, /* TLO[ 33] = +4.616603670481e-17 */
    0xB26416FF, 0x3FF33C08, /* THI[ 34] = +1.202156731453e+00 */
    0x843659A5, 0x3C932721, /* TLO[ 34] = +6.644981499252e-17 */
    0x5F929FF1, 0x3FF356C5, /* THI[ 35] = +1.208684323627e+00 */
    0x5C4E4628, 0xBC8B5CEE, /* TLO[ 35] = -4.746725945229e-17 */
    0x373AA9CB, 0x3FF371A7, /* THI[ 36] = +1.215247359980e+00 */
    0xBF42EAE1, 0xBC963AEA, /* TLO[ 36] = -7.712630692681e-17 */
    0x6D05D866, 0x3FF38CAE, /* THI[ 37] = +1.221846032973e+00 */
    0x3C9904BC, 0xBC9E958D, /* TLO[ 37] = -1.061102121140e-16 */
    0x34E59FF7, 0x3FF3A7DB, /* THI[ 38] = +1.228480536107e+00 */
    0xD661F5E2, 0xBC75E436, /* TLO[ 38] = -1.898781631303e-17 */
    0xC313A8E5, 0x3FF3C32D, /* THI[ 39] = +1.235151063937e+00 */
    0x375D29C3, 0xBC9EFFF8, /* TLO[ 39] = -1.075524434431e-16 */
    0x4C123422, 0x3FF3DEA6, /* THI[ 40] = +1.241857812073e+00 */
    0x11F09EBB, 0x3C8ADA09, /* TLO[ 40] = +4.658027591837e-17 */
    0x04AC801C, 0x3FF3FA45, /* THI[ 41] = +1.248600977189e+00 */
    0xF956F9F3, 0xBC97D023, /* TLO[ 41] = -8.261810999022e-17 */
    0x21F72E2A, 0x3FF4160A, /* THI[ 42] = +1.255380757025e+00 */
    0x1C309278, 0xBC5EF369, /* TLO[ 42] = -6.711389821297e-18 */
    0xD950A897, 0x3FF431F5, /* THI[ 43] = +1.262197350394e+00 */
    0xE35F7998, 0xBC81C7DD, /* TLO[ 43] = -3.084464887474e-17 */
    0x6061892D, 0x3FF44E08, /* THI[ 44] = +1.269050957192e+00 */
    0x04EF80CF, 0x3C489B7A, /* TLO[ 44] = +2.667932131342e-18 */
    0xED1D0057, 0x3FF46A41, /* THI[ 45] = +1.275941778396e+00 */
    0xD1648A76, 0x3C9C944B, /* TLO[ 45] = +9.915430244214e-17 */
    0xB5C13CD0, 0x3FF486A2, /* THI[ 46] = +1.282870016079e+00 */
    0xB69062F0, 0x3C73C1A3, /* TLO[ 46] = +1.713594918244e-17 */
    0xF0D7D3DE, 0x3FF4A32A, /* THI[ 47] = +1.289835873407e+00 */
    0xF3D1BE56, 0x3C99CB62, /* TLO[ 47] = +8.949257530898e-17 */
    0xD5362A27, 0x3FF4BFDA, /* THI[ 48] = +1.296839554651e+00 */
    0xAFEC42E2, 0x3C7D4397, /* TLO[ 48] = +2.538250279489e-17 */
    0x99FDDD0D, 0x3FF4DCB2, /* THI[ 49] = +1.303881265192e+00 */
    0xBC6A7833, 0x3C98ECDB, /* TLO[ 49] = +8.647675598268e-17 */
    0x769D2CA7, 0x3FF4F9B2, /* THI[ 50] = +1.310961211525e+00 */
    0xD25957E3, 0xBC94B309, /* TLO[ 50] = -7.181536135519e-17 */
    0xA2CF6642, 0x3FF516DA, /* THI[ 51] = +1.318079601266e+00 */
    0x69BD93EE, 0xBC8F7685, /* TLO[ 51] = -5.457955827149e-17 */
    0x569D4F82, 0x3FF5342B, /* THI[ 52] = +1.325236643160e+00 */
    0x1DB13CAC, 0xBC807ABE, /* TLO[ 52] = -2.858731210039e-17 */
    0xCA5D920F, 0x3FF551A4, /* THI[ 53] = +1.332432547083e+00 */
    0xEFEDE59A, 0xBC8D689C, /* TLO[ 53] = -5.101586630917e-17 */
    0x36B527DA, 0x3FF56F47, /* THI[ 54] = +1.339667524053e+00 */
    0x011D93AC, 0x3C99BB2C, /* TLO[ 54] = +8.927282594832e-17 */
    0xD497C7FD, 0x3FF58D12, /* THI[ 55] = +1.346941786233e+00 */
    0x5B9A1DE7, 0x3C8295E1, /* TLO[ 55] = +3.224065101255e-17 */
    0xDD485429, 0x3FF5AB07, /* THI[ 56] = +1.354255546937e+00 */
    0x054647AC, 0x3C96324C, /* TLO[ 56] = +7.700948379803e-17 */
    0x8A5946B7, 0x3FF5C926, /* THI[ 57] = +1.361609020638e+00 */
    0x816986A2, 0x3C3C4B1B, /* TLO[ 57] = +1.533787661271e-18 */
    0x15AD2148, 0x3FF5E76F, /* THI[ 58] = +1.369002422975e+00 */
    0x3080E65D, 0x3C9BA6F9, /* TLO[ 58] = +9.593797919119e-17 */
    0xB976DC09, 0x3FF605E1, /* THI[ 59] = +1.376435970755e+00 */
    0x9B56DE47, 0xBC93E242, /* TLO[ 59] = -6.898588935872e-17 */
    0xB03A5585, 0x3FF6247E, /* THI[ 60] = +1.383909881964e+00 */
    0x7E40B496, 0xBC9383C1, /* TLO[ 60] = -6.770511658795e-17 */
    0x34CCC320, 0x3FF64346, /* THI[ 61] = +1.391424375772e+00 */
    0x759D8932, 0xBC8C483C, /* TLO[ 61] = -4.906174865289e-17 */
    0x82552225, 0x3FF66238, /* THI[ 62] = +1.398979672538e+00 */
    0x87591C33, 0xBC9BB609, /* TLO[ 62] = -9.614213209051e-17 */
    0xD44CA973, 0x3FF68155, /* THI[ 63] = +1.406575993819e+00 */
    0x44F73E64, 0x3C6038AE, /* TLO[ 63] = +7.034914812136e-18 */
    0x667F3BCD, 0x3FF6A09E, /* THI[ 64] = +1.414213562373e+00 */
    0x13B26455, 0xBC9BDD34, /* TLO[ 64] = -9.667293313453e-17 */
    0x750BDABF, 0x3FF6C012, /* THI[ 65] = +1.421892602169e+00 */
    0x67FF0B0C, 0xBC728956, /* TLO[ 65] = -1.607782891589e-17 */
    0x3C651A2F, 0x3FF6DFB2, /* THI[ 66] = +1.429613338392e+00 */
    0x683C88AA, 0xBC6BBE3A, /* TLO[ 66] = -1.203164248905e-17 */
    0xF9519484, 0x3FF6FF7D, /* THI[ 67] = +1.437375997449e+00 */
    0x25860EF6, 0xBC883C0F, /* TLO[ 67] = -4.204034016468e-17 */
    0xE8EC5F74, 0x3FF71F75, /* THI[ 68] = +1.445180806977e+00 */
    0x86887A99, 0xBC816E47, /* TLO[ 68] = -3.023758134994e-17 */
    0x48A58174, 0x3FF73F9A, /* THI[ 69] = +1.453027995849e+00 */
    0x6C65D53B, 0xBC90A8D9, /* TLO[ 69] = -5.779948609396e-17 */
    0x564267C9, 0x3FF75FEB, /* THI[ 70] = +1.460917794181e+00 */
    0x57316DD3, 0xBC902459, /* TLO[ 70] = -5.600377186075e-17 */
    0x4FDE5D3F, 0x3FF78069, /* THI[ 71] = +1.468850433337e+00 */
    0x0A02162C, 0x3C9866B8, /* TLO[ 71] = +8.465882756534e-17 */
    0x73EB0187, 0x3FF7A114, /* THI[ 72] = +1.476826145939e+00 */
    0xEE04992F, 0xBC841577, /* TLO[ 72] = -3.483994556893e-17 */
    0x0130C132, 0x3FF7C1ED, /* THI[ 73] = +1.484845165873e+00 */
    0xD1164DD5, 0x3C9F124C, /* TLO[ 73] = +1.078008676441e-16 */
    0x36CF4E62, 0x3FF7E2F3, /* THI[ 74] = +1.492907728291e+00 */
    0xBA15797E, 0x3C705D02, /* TLO[ 74] = +1.419292015428e-17 */
    0x543E1A12, 0x3FF80427, /* THI[ 75] = +1.501014069626e+00 */
    0x626D972A, 0xBC927C86, /* TLO[ 75] = -6.413767275790e-17 */
    0x994CCE13, 0x3FF82589, /* THI[ 76] = +1.509164427593e+00 */
    0xD41532D7, 0xBC9D4C1D, /* TLO[ 76] = -1.016455327754e-16 */
    0x4623C7AD, 0x3FF8471A, /* THI[ 77] = +1.517359041198e+00 */
    0xA341CDFB, 0xBC88D684, /* TLO[ 77] = -4.308699472043e-17 */
    0x9B4492ED, 0x3FF868D9, /* THI[ 78] = +1.525598150745e+00 */
    0x9BD4F6BA, 0xBC9FC6F8, /* TLO[ 78] = -1.102494171234e-16 */
    0xD98A6699, 0x3FF88AC7, /* THI[ 79] = +1.533881997841e+00 */
    0xF37CB53A, 0x3C9994C2, /* TLO[ 79] = +8.875226844438e-17 */
    0x422AA0DB, 0x3FF8ACE5, /* THI[ 80] = +1.542210825408e+00 */
    0x56864B26, 0x3C96E9F1, /* TLO[ 80] = +7.949834809698e-17 */
    0x16B5448C, 0x3FF8CF32, /* THI[ 81] = +1.550584877685e+00 */
    0x32E9E3AA, 0xBC70D55E, /* TLO[ 81] = -1.460070659069e-17 */
    0x99157736, 0x3FF8F1AE, /* THI[ 82] = +1.559004400238e+00 */
    0xA2E3976C, 0x3C85CC13, /* TLO[ 82] = +3.781207053358e-17 */
    0x0B91FFC6, 0x3FF9145B, /* THI[ 83] = +1.567469639966e+00 */
    0x2E582523, 0xBC9DD679, /* TLO[ 83] = -1.035206176885e-16 */
    0xB0CDC5E5, 0x3FF93737, /* THI[ 84] = +1.575980845108e+00 */
    0x81B57EBB, 0xBC675FC7, /* TLO[ 84] = -1.013691647128e-17 */
    0xCBC8520F, 0x3FF95A44, /* THI[ 85] = +1.584538265252e+00 */
    0x96A5F039, 0xBC764B7C, /* TLO[ 85] = -1.933771703459e-17 */
    0x9FDE4E50, 0x3FF97D82, /* THI[ 86] = +1.593142151342e+00 */
    0x7C1B85D0, 0xBC9D185B, /* TLO[ 86] = -1.009440654231e-16 */
    0x70CA07BA, 0x3FF9A0F1, /* THI[ 87] = +1.601792755683e+00 */
    0x91CEE632, 0xBC9173BD, /* TLO[ 87] = -6.054917453528e-17 */
    0x82A3F090, 0x3FF9C491, /* THI[ 88] = +1.610490331949e+00 */
    0xB071F2BE, 0x3C7C7C46, /* TLO[ 88] = +2.470719256980e-17 */
    0x19E32323, 0x3FF9E863, /* THI[ 89] = +1.619235135195e+00 */
    0x78E64C6E, 0x3C7824CA, /* TLO[ 89] = +2.094133415423e-17 */
    0x7B5DE565, 0x3FFA0C66, /* THI[ 90] = +1.628027421857e+00 */
    0x5D1CD532, 0xBC935949, /* TLO[ 90] = -6.712955084707e-17 */
    0xEC4A2D33, 0x3FFA309B, /* THI[ 91] = +1.636867449767e+00 */
    0x7DDC36AB, 0x3C96305C, /* TLO[ 91] = +7.698325071320e-17 */
    0xB23E255D, 0x3FFA5503, /* THI[ 92] = +1.645755478154e+00 */
    0xDB8D41E1, 0xBC9D2F6E, /* TLO[ 92] = -1.012567991367e-16 */
    0x1330B358, 0x3FFA799E, /* THI[ 93] = +1.654691767656e+00 */
    0xCAC563C6, 0x3C9BCB7E, /* TLO[ 93] = +9.643294303196e-17 */
    0x5579FDBF, 0x3FFA9E6B, /* THI[ 94] = +1.663676580327e+00 */
    0x0EF7FD31, 0x3C90FAC9, /* TLO[ 94] = +5.890992696713e-17 */
    0xBFD3F37A, 0x3FFAC36B, /* THI[ 95] = +1.672710179642e+00 */
    0xCAE76CD0, 0xBC8F9234, /* TLO[ 95] = -5.476715964600e-17 */
    0x995AD3AD, 0x3FFAE89F, /* THI[ 96] = +1.681792830507e+00 */
    0x345DCC81, 0x3C97A1CD, /* TLO[ 96] = +8.199010020581e-17 */
    0x298DB666, 0x3FFB0E07, /* THI[ 97] = +1.690924799269e+00 */
    0x4C80E424, 0xBC9BDEF5, /* TLO[ 97] = -9.669671474395e-17 */
    0xB84F15FB, 0x3FFB33A2, /* THI[ 98] = +1.700106353719e+00 */
    0x3084D707, 0xBC62805E, /* TLO[ 98] = -8.023719370398e-18 */
    0x8DE5593A, 0x3FFB5972, /* THI[ 99] = +1.709337763100e+00 */
    0xBBBA6DE3, 0xBC9C71DF, /* TLO[ 99] = -9.868779456633e-17 */
    0xF2FB5E47, 0x3FFB7F76, /* THI[100] = +1.718619298122e+00 */
    0x7E54AC3A, 0xBC75584F, /* TLO[100] = -1.851380418263e-17 */
    0x30A1064A, 0x3FFBA5B0, /* THI[101] = +1.727951230962e+00 */
    0x0E54292E, 0xBC9EFCD3, /* TLO[101] = -1.075098186120e-16 */
    0x904BC1D2, 0x3FFBCC1E, /* THI[102] = +1.737333835274e+00 */
    0x7A2D9E84, 0x3C823DD0, /* TLO[102] = +3.164389299293e-17 */
    0x5BD71E09, 0x3FFBF2C2, /* THI[103] = +1.746767386199e+00 */
    0x3F6B9C72, 0xBC9EFDCA, /* TLO[103] = -1.075229048351e-16 */
    0xDD85529C, 0x3FFC199B, /* THI[104] = +1.756252160373e+00 */
    0x895048DD, 0x3C811065, /* TLO[104] = +2.960140695449e-17 */
    0x5FFFD07A, 0x3FFC40AB, /* THI[105] = +1.765788435933e+00 */
    0xE083C60A, 0x3C9B4537, /* TLO[105] = +9.461315018083e-17 */
    0x2E57D14B, 0x3FFC67F1, /* THI[106] = +1.775376492527e+00 */
    0xFF483CAC, 0x3C92884D, /* TLO[106] = +6.429731796557e-17 */
    0x9406E7B5, 0x3FFC8F6D, /* THI[107] = +1.785016611319e+00 */
    0x48805C44, 0x3C71ACBC, /* TLO[107] = +1.533040012103e-17 */
    0xDCEF9069, 0x3FFCB720, /* THI[108] = +1.794709075003e+00 */
    0xD1E949DB, 0x3C7503CB, /* TLO[108] = +1.822745842791e-17 */
    0x555DC3FA, 0x3FFCDF0B, /* THI[109] = +1.804454167807e+00 */
    0x53829D72, 0xBC8DD83B, /* TLO[109] = -5.177222408793e-17 */
    0x4A07897C, 0x3FFD072D, /* THI[110] = +1.814252175500e+00 */
    0x43797A9C, 0xBC9CBC37, /* TLO[110] = -9.969531538920e-17 */
    0x080D89F2, 0x3FFD2F87, /* THI[111] = +1.824103385407e+00 */
    0x719D8577, 0xBC9D487B, /* TLO[111] = -1.015962786228e-16 */
    0xDCFBA487, 0x3FFD5818, /* THI[112] = +1.834008086409e+00 */
    0xD75B3706, 0x3C82ED02, /* TLO[112] = +3.283107224246e-17 */
    0x16C98398, 0x3FFD80E3, /* THI[113] = +1.843966568959e+00 */
    0x8BEDDFE8, 0xBC911EC1, /* TLO[113] = -5.939742026950e-17 */
    0x03DB3285, 0x3FFDA9E6, /* THI[114] = +1.853979125083e+00 */
    0x696DB532, 0x3C9C2300, /* TLO[114] = +9.761887490728e-17 */
    0xF301B460, 0x3FFDD321, /* THI[115] = +1.864046048398e+00 */
    0x78F018C2, 0x3C92DA57, /* TLO[115] = +6.540912680621e-17 */
    0x337B9B5F, 0x3FFDFC97, /* THI[116] = +1.874167634110e+00 */
    0x4F184B5B, 0xBC91A5CD, /* TLO[116] = -6.122763413004e-17 */
    0x14F5A129, 0x3FFE2646, /* THI[117] = +1.884344179032e+00 */
    0x817A1496, 0xBC97B627, /* TLO[117] = -8.226593125534e-17 */
    0xE78B3FF6, 0x3FFE502E, /* THI[118] = +1.894575981587e+00 */
    0x80A9CC8F, 0x3C839E89, /* TLO[118] = +3.403403535217e-17 */
    0xFBC74C83, 0x3FFE7A51, /* THI[119] = +1.904863341818e+00 */
    0xCA0C8DE1, 0x3C92D522, /* TLO[119] = +6.533857514718e-17 */
    0xA2A490DA, 0x3FFEA4AF, /* THI[120] = +1.915206561397e+00 */
    0x179C2893, 0xBC9E9C23, /* TLO[120] = -1.061994605620e-16 */
    0x2D8E67F1, 0x3FFECF48, /* THI[121] = +1.925605943636e+00 */
    0xB411AD8C, 0xBC9C93F3, /* TLO[121] = -9.914963769694e-17 */
    0xEE615A27, 0x3FFEFA1B, /* THI[122] = +1.936061793492e+00 */
    0x86A4B6B0, 0x3C9DC7F4, /* TLO[122] = +1.033238596068e-16 */
    0x376BBA97, 0x3FFF252B, /* THI[123] = +1.946574417579e+00 */
    0xBF0D8E43, 0x3C93A1A5, /* TLO[123] = +6.811022349534e-17 */
    0x5B6E4540, 0x3FFF5076, /* THI[124] = +1.957144124175e+00 */
    0x2DD8A18A, 0x3C99D3E1, /* TLO[124] = +8.960767791037e-17 */
    0xAD9CBE14, 0x3FFF7BFD, /* THI[125] = +1.967771223233e+00 */
    0xD0063509, 0xBC9DBB12, /* TLO[125] = -1.031492801153e-16 */
    0x819E90D8, 0x3FFFA7C1, /* THI[126] = +1.978456026388e+00 */
    0xF3A5931E, 0x3C874853, /* TLO[126] = +4.038875310928e-17 */
    0x2B8F71F1, 0x3FFFD3C2, /* THI[127] = +1.989198846967e+00 */
    0x966579E7, 0x3C62EB74, /* TLO[127] = +8.205132638369e-18 */
    /* Coefficients of Log2Poly */
    0x966457E8, 0x3E79C3A6, /* A1 = +9.5979350332335028e-08 */
    0x46694107, 0xBFD62E43, /* _A2 = -3.4657365680779192e-01 */
    0x62B6DEE1, 0x3FC47FD4, /* _A3 = +1.6015105075870565e-01 */
    0x2A9012D8, 0xBFB55047, /* A4 = -8.3256194964700267e-02 */
    /* Coefficients of Exp2Poly */
    0xFEFA39EF, 0x3FE62E42, /* _B1 = +6.9314718055994531e-01 */
    0xFF82C58F, 0x3FCEBFBD, /* _B2 = +2.4022650695910071e-01 */
    0xD704A0C0, 0x3FAC6B08, /* _B3 = +5.5504108664821580e-02 */
    0x6FBA4E77, 0x3F83B2AB, /* B4 = +9.6181291076284772e-03 */
    0xE78A6731, 0x3F55D87F, /* B5 = +1.3333558146428443e-03 */
    /* Other constants */
    0x00000000, 0x7FE00000, /* BIG_SMALL(0) = BIG_VALUE = 2^(1023) */
    0x00000000, 0x00100000, /* BIG_SMALL(1) = SMALL_VALUE = 2^(-1022) */
    0x00000000, 0x00000000, /* ZERO = 0.0 */
    0x00000000, 0x3FF00000, /* ONES(0) = ONE  = +1.0 */
    0x00000000, 0xBFF00000, /* ONES(1) = MONE = -1.0 */
    /* Right shifter to obtain index j for getting */
    /* THI[j], TLO[j] from a table */
    0x00000000, 0x42C80000, /* RST = 1.5*2^(45) */
    /* High part of 1/ln(2) */
    0x40000000, 0x3FF71547, /* C = +1.4426949024200439e+00 */
    /* Constant used to obtain high bits */
    0x02000000, 0x41A00000, /* T27 = 2^(27)+1 */
    /* Constants to deal with denormals */
    0x00000000, 0x4C700000, /* DENO_SCALE   = 2^(+200) */
    0x00000000, 0x33700000, /* DENO_UNSCALE = 2^(-200) */
};

__attribute__((always_inline))
inline int __dpown_la_nolut_pown_lut_cout (double *a, int *b, double *r)
{
    int nRet = 0;
    double dbVTmp1, dbVTmp2, dbVPHH, dbVPHL;
    double dX, dY, dR, dbAX, dbSignRes, dbX1, dbRcp1, dbL1Hi, dbL1Lo, dbX2, dbRcp2, dbL2Hi, dbL2Lo,
        dbX3, dbRcp3C, dbL3Hi, dbL3Lo, dbK, dbT, dbD, dbR1, dbCQ, dbRcpC, dbX1Hi, dbX1Lo,
        dbRcpCHi, dbRcpCLo, dbTmp1, dbE, dbT_CQHi, dbCQLo, dbR, dbLogPart3, dbLog2Poly,
        dbHH, dbHL, dbHLL, dbYHi, dbYLo, dbTmp2, dbTmp3, dbPH, dbPL, dbPLL, dbZ, dbExp2Poly, dbExp2PolyT, dbResLo, dbResHi, dbRes, dbTwoPowN, dbAY;
    int i, iEXB, iEYB, iSignX, iSignY, iYHi, iYLo, iYIsFinite, iEY, iYIsInt, iXIsFinite,
        iDenoExpAdd, iXHi, k, i1, i2, i3, iELogAX, iN, j, iERes, iSign, iIsSigZeroX, iIsSigZeroY;
    dX = *a;
    dY = (double) (*b);
    /* Get biased exponent of x */
    iEXB = ((((_iml_v2_dp_union_t *) & dX)->dwords.hi_dword >> 20) & 0x7FF);
    /* Get biased exponent of y */
    iEYB = ((((_iml_v2_dp_union_t *) & dY)->dwords.hi_dword >> 20) & 0x7FF);
    /* Get sign of x */
    iSignX = (((_iml_v2_dp_union_t *) & dX)->dwords.hi_dword >> 31);
    /* Get sign of y */
    iSignY = (((_iml_v2_dp_union_t *) & dY)->dwords.hi_dword >> 31);
    /* Check whether significands of x,y are zero */
    iIsSigZeroX = (((((_iml_v2_dp_union_t *) & dX)->dwords.hi_dword & 0x000FFFFF) == 0) && ((((_iml_v2_dp_union_t *) & dX)->dwords.lo_dword) == 0));
    iIsSigZeroY = (((((_iml_v2_dp_union_t *) & dY)->dwords.hi_dword & 0x000FFFFF) == 0) && ((((_iml_v2_dp_union_t *) & dY)->dwords.lo_dword) == 0));
    /* Get high 32 bits of |y| */
    iYHi = (iEYB << 20) | (((_iml_v2_dp_union_t *) & dY)->dwords.hi_dword & 0x000FFFFF);
    /* Get low 32 bits of |y| */
    iYLo = (((_iml_v2_dp_union_t *) & dY)->dwords.lo_dword);
    /* Check if y is finite number */
    iYIsFinite = (((((_iml_v2_dp_union_t *) & dY)->dwords.hi_dword >> 20) & 0x7FF) != 0x7FF);
    /* Start of checking whether y is integer */
    if (iYHi | iYLo)
    {
        /* Here if y<>0 */
        /* Get exponent of y */
        iEY = iEYB - 0x3FF;
        if ((0x3FF <= iEYB) && iYIsFinite)
        {
            /* Here if 1<=|y|<Inf */
            if (iEY <= 20)
            {
                /* Here if 0<=ex(y)<=20 */
                /* Check if exist nonzero fraction bits in y */
                if (((iYHi << iEY) << 12) | iYLo)
                {
                    /* Here if y is not an integer */
                    iYIsInt = 0;
                }
                else
                {
                    /* Here if y is an integer */
                    /* Check the lowest integer bit of y */
                    if ((iYHi << (iEY + 11)) & 0x80000000)
                    {
                        iYIsInt = 1;
                    }
                    else
                    {
                        iYIsInt = 2;
                    }
                }
            }
            else
            {
                if (iEY < 53)
                {
                    /* Here if exponent of y, 21<=ex(y)<=52 */
                    /* Check if exist nonzero fraction bits in y */
                    if ((iYLo << (iEY + 12 - 32 - 1)) << 1)
                    {
                        /* Here if y is not an integer */
                        iYIsInt = 0;
                    }
                    else
                    {
                        /* Here if y is an integer */
                        /* Check the lowest integer bit of y */
                        if ((iYLo << (iEY + 12 - 32 - 1)) & 0x80000000)
                        {
                            iYIsInt = 1;
                        }
                        else
                        {
                            iYIsInt = 2;
                        }
                    }
                }
                else
                {
                    /* Here if 2^53<=|y|<Inf */
                    iYIsInt = 2;
                }
            }
        }
        else
        {
            /* Here if |y|<1, y<>0 or |y|=INF, or y=NaN */
            iYIsInt = 0;
        }
    }
    else
    {
        /* Here if y=0 */
        iYIsInt = 2;
    }   /* End of checking whether y is integer. */
    /* Filter out cases where x=1 or y=0 */
    if (!((iSignX == 0) && (iEXB == 0x3FF) && iIsSigZeroX) && !((iEYB == 0) && iIsSigZeroY))
    {
        /* Here if x<>1, y<>0 (x or y can be NaN) */
        /* Check if x is finite number */
        iXIsFinite = (((((_iml_v2_dp_union_t *) & dX)->dwords.hi_dword >> 20) & 0x7FF) != 0x7FF);
        /* Filter out NaNs */
        if ((iXIsFinite || iIsSigZeroX) && (iYIsFinite || iIsSigZeroY))
        {
            /* Here if x<>NaN, y<>NaN, x<>1, y<>0 */
            if (dX != ((__constant double *) __dpown_la_nolut_CoutTab)[852])
            {
                /* Here if x<>NaN, y<>NaN, x<>0, y<>0, x<>1 */
                if (!((dX == ((__constant double *) __dpown_la_nolut_CoutTab)[854]) && (iYIsInt || !iYIsFinite)))
                {
                    /* Here if x<>NaN, y<>NaN, x<>0, y<>0, x<>1, and */
                    /* if x=-1 then y can only be finite non-integer */
                    if (iXIsFinite && iYIsFinite)
                    {
                        /* Here if x,y are finite nonzero numbers, x<>1, */
                        /* and                                           */
                        /* if x=-1 then y can only be finite non-integer */
                        if ((dX > ((__constant double *) __dpown_la_nolut_CoutTab)[852]) || iYIsInt)
                        {
                            /* Path 7). "Main" path: x,y are finite     */
                            /*          nonzero numbers, |x|<>1,        */
                            /*          and if x<0 then y is integer    */
                            /* 7.a) Get sign of the result into dbSignRes */
                            dbSignRes = ((__constant double *) __dpown_la_nolut_CoutTab)[853 + (iSignX & iYIsInt)];
                            /* 7.b) Calculating r = log2|x| */
                            /* 7.b.1) Getting X1 */
                            /* At first, represent |x| in the form  */
                            /* |x| = 2^iDenoExpAdd * AX,            */
                            /* where AX is normalized               */
                            iDenoExpAdd = 0;
                            dbAX = dX;
                            (((_iml_v2_dp_union_t *) & dbAX)->dwords.hi_dword =
                             (((_iml_v2_dp_union_t *) & dbAX)->dwords.hi_dword & 0x7FFFFFFF) | ((_iml_uint32_t) (0) << 31));
                            if (iEXB == 0)
                            {
                                /* Here if x is denormal */
                                dbAX = dbAX * ((__constant double *) __dpown_la_nolut_CoutTab)[858];
                                iDenoExpAdd = iDenoExpAdd - 200;
                            }
                            /* Then get X1 by copying X1 := AX and      */
                            /* setting exponent field of X1 to biased 0 */
                            dbX1 = dbAX;
                            (((_iml_v2_dp_union_t *) & dbX1)->dwords.hi_dword =
                             (((_iml_v2_dp_union_t *) & dbX1)->dwords.hi_dword & 0x800FFFFF) | (((_iml_uint32_t) (0x3FF) & 0x7FF) << 20));
                            /* 7.b.2) Getting k */
                            /* Get high 32 bits of AX into XHi */
                            iXHi = ((((_iml_v2_dp_union_t *) & dbAX)->dwords.hi_dword >> 20) & 0x7FF);
                            iXHi = iXHi << 20;
                            iXHi = iXHi | (((_iml_v2_dp_union_t *) & dbAX)->dwords.hi_dword & 0x000FFFFF);
                            /* Get k using XHi */
                            k = iXHi - 0x3FE7C000;
                            k = k >> 20;
                            k = k + iDenoExpAdd;
                            /* 7.b.3) Get Rcp1, log2(1/Rcp1) from tables */
                            /* Get index i1 from rcpK1 most */
                            /* significand bits of X1 */
                            i1 = (((_iml_v2_dp_union_t *) & dbX1)->dwords.hi_dword & 0x000FFFFF);
                            i1 = i1 & 0xFC000;
                            i1 = i1 + 0x4000;
                            i1 = i1 >> 15;
                            /* Get Rcp1 */
                            dbRcp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[0 + i1];
                            /* Get log2(1/Rcp1) */
                            dbL1Hi = ((__constant double *) __dpown_la_nolut_CoutTab)[33 + 2 * (i1) + 0];
                            dbL1Lo = ((__constant double *) __dpown_la_nolut_CoutTab)[33 + 2 * (i1) + 1];
                            /* 7.b.4) Get Rcp2, log2(1/Rcp2) from tables */
                            /* Get X2 */
                            dbX2 = dbX1 * dbRcp1;
                            /* Get index i2 from rcpK2 bits of */
                            /* significand of X2 */
                            i2 = (((_iml_v2_dp_union_t *) & dbX2)->dwords.hi_dword & 0x000FFFFF);
                            i2 = i2 & 0xFC00;
                            i2 = i2 + 0x400;
                            i2 = i2 >> 11;
                            /* Get Rcp2 */
                            dbRcp2 = ((__constant double *) __dpown_la_nolut_CoutTab)[99 + i2];
                            /* Get log2(1/Rcp2) */
                            dbL2Hi = ((__constant double *) __dpown_la_nolut_CoutTab)[132 + 2 * (i2) + 0];
                            dbL2Lo = ((__constant double *) __dpown_la_nolut_CoutTab)[132 + 2 * (i2) + 1];
                            /* 7.b.5) get Rcp3C, log2(C/Rcp3C)  */
                            /*        from tables               */
                            /* Get X3 */
                            dbX3 = dbX2 * dbRcp2;
                            /* Get index i3 from rcpK3 bits of */
                            /* significand of X3 */
                            i3 = (((_iml_v2_dp_union_t *) & dbX3)->dwords.hi_dword & 0x000FFFFF);
                            i3 = i3 & 0xFF0;
                            i3 = i3 + 0x10;
                            i3 = i3 >> 5;
                            /* Get Rcp3C */
                            dbRcp3C = ((__constant double *) __dpown_la_nolut_CoutTab)[198 + i3];
                            /* Get log2(C/Rcp3C) */
                            dbL3Hi = ((__constant double *) __dpown_la_nolut_CoutTab)[327 + 2 * (i3) + 0];
                            dbL3Lo = ((__constant double *) __dpown_la_nolut_CoutTab)[327 + 2 * (i3) + 1];
                            /* 7.b.6) Recombine                          */
                            /* k+log2(1/Rcp1)+log2(1/Rcp2)+log2(C/Rcp3C) */
                            /* T := k + L1Hi + L2Hi + L3Hi */
                            dbK = (double) k;
                            dbT = (dbK + dbL1Hi);
                            dbT = (dbT + dbL2Hi);
                            dbT = (dbT + dbL3Hi);
                            /* D :=     L1Lo + L2Lo + L3Lo */
                            dbD = (dbL2Lo + dbL3Lo);
                            dbD = (dbD + dbL1Lo);
                            /* 7.b.7) Get approximation CQ to cq */
                            dbR1 = (dbX3 * dbRcp3C);
                            dbCQ = (dbR1 - ((__constant double *) __dpown_la_nolut_CoutTab)[856]);
                            /* 7.b.8) Get the correction term E for CQ */
                            /* RcpC := Rcp1 * Rcp2 * Rcp3C */
                            dbRcpC = (dbRcp1 * dbRcp2);
                            dbRcpC = (dbRcpC * dbRcp3C);
                            /* Split X1 into sum X1Hi+X1Lo */
                            dbVTmp1 = ((dbX1) * (((__constant double *) __dpown_la_nolut_CoutTab)[857]));
                            dbVTmp2 = (dbVTmp1 - (dbX1));
                            dbVTmp1 = (dbVTmp1 - dbVTmp2);
                            dbVTmp2 = ((dbX1) - dbVTmp1);
                            dbX1Hi = dbVTmp1;
                            dbX1Lo = dbVTmp2;
                            /* Split RcpC into sum RcpCHi+RcpCLo */
                            dbVTmp1 = ((dbRcpC) * (((__constant double *) __dpown_la_nolut_CoutTab)[857]));
                            dbVTmp2 = (dbVTmp1 - (dbRcpC));
                            dbVTmp1 = (dbVTmp1 - dbVTmp2);
                            dbVTmp2 = ((dbRcpC) - dbVTmp1);
                            dbRcpCHi = dbVTmp1;
                            dbRcpCLo = dbVTmp2;
                            /* Computing E */
                            dbTmp1 = (dbX1Hi * dbRcpCHi);
                            dbE = (dbTmp1 - dbR1);
                            dbTmp1 = (dbX1Lo * dbRcpCHi);
                            dbE = (dbE + dbTmp1);
                            dbTmp1 = (dbX1Hi * dbRcpCLo);
                            dbE = (dbE + dbTmp1);
                            dbTmp1 = (dbX1Lo * dbRcpCLo);
                            dbE = (dbE + dbTmp1);
                            /* 7.c) Get high part and exponent of log2|x| */
                            /* Rebreak T + CQ into sum of high and low */
                            /* parts T_CQHi + CQLo */
                            dbVTmp1 = ((dbT) + (dbCQ));
                            dbTmp1 = ((dbT) - dbVTmp1);
                            dbVTmp2 = (dbTmp1 + (dbCQ));
                            dbT_CQHi = dbVTmp1;
                            dbCQLo = dbVTmp2;
                            /* Get exponent of T_CQHi */
                            iELogAX = ((((_iml_v2_dp_union_t *) & dbT_CQHi)->dwords.hi_dword >> 20) & 0x7FF);
                            /* 7.d) Estimate |y*log2|x|| */
                            if (iELogAX + iEYB < 11 + 2 * 0x3FF)
                            {
                                /* Here if ex(log2|x|) + ex(y) < 11 */
                                /* Here we have 0 < |y*log2|x|| < 4*2^10 */
                                if (iELogAX + iEYB > -62 + 2 * 0x3FF)
                                {
                                    /* Path 7.3). Here if                 */
                                    /* -62 < ex(y) + ex(log2|x|) < 11     */
                                    /* Here we have:                      */
                                    /* 2^(-61) <= |y*log2|x|| < 4*2^10    */
                                    /* 7.3.a) R := CQ + E */
                                    dbR = (dbCQ + dbE);
                                    /* 7.3.b) Polynomial */
                                    dbLog2Poly =
                                        ((((((__constant double *) __dpown_la_nolut_CoutTab)[844]) * dbR +
                                           ((__constant double *) __dpown_la_nolut_CoutTab)[843]) * dbR +
                                          ((__constant double *) __dpown_la_nolut_CoutTab)[842]) * dbR +
                                         ((__constant double *) __dpown_la_nolut_CoutTab)[841]) * dbR;
                                    /* 7.3.c) Get 3 parts of log2|x| */
                                    /* LogPart3 := CQLo + E + D */
                                    dbLogPart3 = (dbCQLo + dbE);
                                    dbLogPart3 = (dbD + dbLogPart3);
                                    /* Rebreak T_CQHi + Log2Poly */
                                    /* into HH + HL */
                                    dbVTmp1 = ((dbT_CQHi) + (dbLog2Poly));
                                    dbTmp1 = ((dbT_CQHi) - dbVTmp1);
                                    dbVTmp2 = (dbTmp1 + (dbLog2Poly));
                                    dbHH = dbVTmp1;
                                    dbHL = dbVTmp2;
                                    /* Rebreak HH + LogPart3 */
                                    /* into HH + HLL */
                                    dbVTmp1 = ((dbHH) + (dbLogPart3));
                                    dbTmp1 = ((dbHH) - dbVTmp1);
                                    dbVTmp2 = (dbTmp1 + (dbLogPart3));
                                    dbHH = dbVTmp1;
                                    dbHLL = dbVTmp2;
                                    /* HLL := HLL + HL */
                                    dbHLL = (dbHLL + dbHL);
                                    /* Split HH into HH + HL */
                                    dbVTmp1 = ((dbHH) * (((__constant double *) __dpown_la_nolut_CoutTab)[857]));
                                    dbVTmp2 = (dbVTmp1 - (dbHH));
                                    dbVTmp1 = (dbVTmp1 - dbVTmp2);
                                    dbVTmp2 = ((dbHH) - dbVTmp1);
                                    dbHH = dbVTmp1;
                                    dbHL = dbVTmp2;
                                    /* 7.3.d) Calculation of y*(HH+HL+HLL) */
                                    /* Split y into YHi+YLo */
                                    dbVTmp1 = ((dY) * (((__constant double *) __dpown_la_nolut_CoutTab)[857]));
                                    dbVTmp2 = (dbVTmp1 - (dY));
                                    dbVTmp1 = (dbVTmp1 - dbVTmp2);
                                    dbVTmp2 = ((dY) - dbVTmp1);
                                    dbYHi = dbVTmp1;
                                    dbYLo = dbVTmp2;
                                    /* Get high PH and medium PL parts of */
                                    /* y*log2|x| */
                                    dbTmp1 = ((dbYHi) * (dbHH));
                                    dbTmp2 = ((dbYLo) * (dbHL));
                                    dbTmp2 = (dbTmp2 + (dbYHi) * (dbHL));
                                    dbTmp3 = (dbTmp2 + (dbYLo) * (dbHH));
                                    dbPH = dbTmp1;
                                    dbPL = dbTmp3;
                                    /* Get low PLL part of y*log2|x| */
                                    dbPLL = (dY * dbHLL);
                                    /* 7.3.e) Calculation of 2^(PH+PL+PLL) */
                                    /* Break PH into PHH + PHL, */
                                    /* where PHH = N + j/2^expK */
                                    dbVTmp1 = (dbPH + ((__constant double *) __dpown_la_nolut_CoutTab)[855]);
                                    iN = (((_iml_v2_dp_union_t *) & dbVTmp1)->dwords.lo_dword);
                                    j = iN & 0x7F;
                                    iN = iN >> 7;
                                    dbVPHH = (dbVTmp1 - ((__constant double *) __dpown_la_nolut_CoutTab)[855]);
                                    dbVPHL = (dbPH - dbVPHH);
                                    /* Z = PHL + PL + PLL */
                                    dbZ = (dbPLL + dbPL);
                                    dbZ = (dbZ + dbVPHL);
                                    /* Exponential polynomial */
                                    dbExp2Poly =
                                        (((((((__constant double *) __dpown_la_nolut_CoutTab)[849]) * dbZ +
                                            ((__constant double *) __dpown_la_nolut_CoutTab)[848]) * dbZ +
                                           ((__constant double *) __dpown_la_nolut_CoutTab)[847]) * dbZ +
                                          ((__constant double *) __dpown_la_nolut_CoutTab)[846]) * dbZ +
                                         ((__constant double *) __dpown_la_nolut_CoutTab)[845]) * dbZ;
                                    /* Get significand of 2^(PH+PL+PLL) */
                                    /* in the form ResHi+ResLo          */
                                    dbExp2PolyT = (dbExp2Poly * ((__constant double *) __dpown_la_nolut_CoutTab)[585 + 2 * (j) + 0]);
                                    dbResLo = (dbExp2PolyT + ((__constant double *) __dpown_la_nolut_CoutTab)[585 + 2 * (j) + 1]);
                                    dbResHi = ((__constant double *) __dpown_la_nolut_CoutTab)[585 + 2 * (j) + 0];
                                    /* Get exponent ERes of the result */
                                    dbRes = (dbResHi + dbResLo);
                                    iERes = ((((_iml_v2_dp_union_t *) & dbRes)->dwords.hi_dword >> 20) & 0x7FF) - 0x3FF;
                                    iERes = (iERes + iN);
                                    if (iERes < 1024)
                                    {
                                        if (iERes >= -1022)
                                        {
                                            /* Path 7.3.e.5) Here if */
                                            /* -1022 <= ERes <= 1023 */
                                            /* Result is normalized */
                                            /* Res  := 2^N * Res */
                                            (((_iml_v2_dp_union_t *) & dbRes)->dwords.hi_dword =
                                             (((_iml_v2_dp_union_t *) & dbRes)->dwords.
                                              hi_dword & 0x800FFFFF) | (((_iml_uint32_t) (iERes + 0x3FF) & 0x7FF) << 20));
                                            /* dR := Res * SignRes */
                                            dbRes = dbRes * dbSignRes;
                                            dR = dbRes;
                                        }
                                        else
                                        {
                                            /* Here if result   */
                                            /* is denormalized  */
                                            /* or underflowed   */
                                            if (iERes >= -1022 - 10)
                                            {
                                                /* Path 7.3.e.4) Here if */
                                                /* -1022-10 <=           */
                                                /*        <= ERes <      */
                                                /*               < -1022 */
                                                /* Result is big denormal */
                                                /* Rebreak ResHi+ResLo */
                                                dbVTmp1 = ((dbResHi) + (dbResLo));
                                                dbTmp1 = ((dbResHi) - dbVTmp1);
                                                dbVTmp2 = (dbTmp1 + (dbResLo));
                                                dbResHi = dbVTmp1;
                                                dbResLo = dbVTmp2;
                                                dbVTmp1 = ((dbResHi) * (((__constant double *) __dpown_la_nolut_CoutTab)[857]));
                                                dbVTmp2 = (dbVTmp1 - (dbResHi));
                                                dbVTmp1 = (dbVTmp1 - dbVTmp2);
                                                dbVTmp2 = ((dbResHi) - dbVTmp1);
                                                dbResHi = dbVTmp1;
                                                dbTmp2 = dbVTmp2;
                                                dbResLo = (dbResLo + dbTmp2);
                                                /* Unscale result */
                                                dbSignRes *= ((__constant double *) __dpown_la_nolut_CoutTab)[859];
                                                iN = (iN + 200);
                                                /* TwoPowN := 2^N */
                                                dbTwoPowN = ((__constant double *) __dpown_la_nolut_CoutTab)[853];
                                                (((_iml_v2_dp_union_t *) & dbTwoPowN)->dwords.hi_dword =
                                                 (((_iml_v2_dp_union_t *) & dbTwoPowN)->dwords.
                                                  hi_dword & 0x800FFFFF) | (((_iml_uint32_t) (iN + 0x3FF) & 0x7FF) << 20));
                                                /* ResHi :=              */
                                                /* ResHi*TwoPowN*SignRes  - was */
                                                /* ResHi*TwoPowN  - fixed FTZ\DAZ */
                                                dbResHi = (dbResHi * dbTwoPowN);
                                                /* ResLo :=              */
                                                /* ResLo*TwoPowN*SignRes  - was */
                                                /* ResLo*TwoPowN  - fixed FTZ\DAZ */
                                                dbResLo = (dbResLo * dbTwoPowN);
                                                /* Res := ResHi + ResLo - was */
                                                /* Res := (ResHi + ResLo)*SignRes - fixed FTZ\DAZ */
                                                dbRes = (dbResHi + dbResLo);
                                                dbRes = (dbRes * dbSignRes);
                                                /* dR := Res            */
                                                /*       + SMALL_VALUE    */
                                                /*       * SMALL_VALUE    */
                                                dbVTmp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[851];
                                                dbVTmp1 = (dbVTmp1 * dbVTmp1);
                                                dbRes = (dbRes + dbVTmp1);
                                                dR = dbRes;
                                            }
                                            else
                                            {
                                                if (iERes >= -1074 - 10)
                                                {
                                                    /* Path 7.3.e.3) Here */
                                                    /* if                 */
                                                    /* -1074-10 <=        */
                                                    /*      <= ERes <     */
                                                    /*         < -1022-10 */
                                                    /* Here if result is  */
                                                    /* small denormal     */
                                                    dbSignRes *= ((__constant double *) __dpown_la_nolut_CoutTab)[859];
                                                    iN = iN + 200;
                                                    /* TwoPowN := 2^N */
                                                    dbTwoPowN = ((__constant double *) __dpown_la_nolut_CoutTab)[853];
                                                    (((_iml_v2_dp_union_t *) & dbTwoPowN)->dwords.hi_dword =
                                                     (((_iml_v2_dp_union_t *) & dbTwoPowN)->dwords.
                                                      hi_dword & 0x800FFFFF) | (((_iml_uint32_t) (iN + 0x3FF) & 0x7FF) << 20));
                                                    /* dR:= */
                                                    dbRes = (dbRes * dbTwoPowN);
                                                    dbRes = (dbRes * dbSignRes);
                                                    dbVTmp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[851];
                                                    dbVTmp1 *= dbVTmp1;
                                                    dbRes = (dbRes + dbVTmp1);
                                                    dR = dbRes;
                                                }
                                                else
                                                {
                                                    /* Path 7.3.e.2) Here */
                                                    /* if ERes < -1074-10 */
                                                    /* Underflow */
                                                    dbVTmp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[851];
                                                    dbVTmp1 *= dbVTmp1;
                                                    dbRes = (dbVTmp1 * dbSignRes);
                                                    dR = dbRes;
                                                }
                                            }
                                        }
                                    }
                                    else
                                    {
                                        /* Path 7.3.e.1) Here if        */
                                        /*               ERes >= 1024   */
                                        /* Overflow */
                                        dbVTmp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[850];
                                        dbVTmp1 = (dbVTmp1 * dbVTmp1);
                                        dbRes = (dbVTmp1 * dbSignRes);
                                        dR = dbRes;
                                    }
                                }
                                else
                                {
                                    /* Path 7.2).                         */
                                    /* Here if ex(y) + ex(log2|x|) <= -62 */
                                    /* Here we have                       */
                                    /* 0 < |y*log2|x|| <= 4*2^(-62)       */
                                    dbVTmp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[853];
                                    dbVTmp1 = (dbVTmp1 + ((__constant double *) __dpown_la_nolut_CoutTab)[851]);
                                    dR = (dbVTmp1 * dbSignRes);
                                }
                            }
                            else
                            {
                                /* Path 7.1).                             */
                                /* Here if ex(y) + ex(log2|x|) >= 11      */
                                /* Here we have 2^11 <= |y*log2|x|| < Inf */
                                /* Get sign of y*log|x| */
                                iSign = iSignY ^ (((_iml_v2_dp_union_t *) & dbT_CQHi)->dwords.hi_dword >> 31);
                                /* If y*log|x|>0 then Tmp1=BIG_VALUE   */
                                /*               else Tmp1=SMALL_VALUE */
                                dbTmp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[850 + (iSign)];
                                /* Tmp1 := Tmp1 * Tmp1 */
                                dbTmp1 = (dbTmp1 * dbTmp1);
                                /* dR := Tmp1 * SignRes */
                                dbTmp1 = (dbTmp1 * dbSignRes);
                                dR = dbTmp1;
                            }
                        }
                        else
                        {
                            /* Path 6). Here if -Inf<x<0, y is finite   */
                            /*          non-integer                     */
                            dbVTmp1 = ((__constant double *) __dpown_la_nolut_CoutTab)[852];
                            dbVTmp1 = dbVTmp1 / dbVTmp1;
                            dR = dbVTmp1;
                            nRet = 1;
                        }
                    }
                    else
                    {
                        /* Path 5). Here if one of arguments is Inf, */
                        /* but none of them is zero or NaN, */
                        /* and |x|<>1 */
                        if (iEXB < 0x3FF)
                        {
                            /* Here if y=Inf, |x|<1 */
                            if (iSignY)
                            {
                                /* Path 5.1). Here if |x|<1, y=-Inf */
                                /* dR := +Inf */
                                dR = dY * dY;
                            }
                            else
                            {
                                /* Path 5.2). Here if |x|<1, y=+Inf */
                                /* dR := +0 */
                                dR = ((__constant double *) __dpown_la_nolut_CoutTab)[852];
                            }
                        }
                        else
                        {
                            /* Here if one of arguments is Inf, */
                            /* but none of them is zero or NaN, */
                            /* and |x|>1 */
                            if (iSignY)
                            {
                                /* Path 5.3). Here if |x|>1, y<0 */
                                /* If x<0, y is negative odd integer */
                                /* then dR := -0 */
                                /* else dR := +0 */
                                dR = ((__constant double *) __dpown_la_nolut_CoutTab)[852] * ((__constant double *) __dpown_la_nolut_CoutTab)[853 +
                                                                                                                                  (iYIsInt & iSignX)];
                            }
                            else
                            {
                                /* Path 5.4). Here if |x|>1, y>0 */
                                /* If x<0, y is positive odd integer */
                                /* then dR := -Inf */
                                /* else dR := +Inf */
                                dbTmp1 = dX * dX;
                                dbTmp1 = dbTmp1 * dY;
                                dR = dbTmp1 * ((__constant double *) __dpown_la_nolut_CoutTab)[853 + (iYIsInt & iSignX)];
                            }
                        }
                    }
                }
                else
                {
                    /* Path 4). Here if x=-1 and y is non-zero integer */
                    /*          or Inf                                 */
                    /* If y is odd integer */
                    /* then dR := -1 */
                    /* else dR := +1 */
                    dR = ((__constant double *) __dpown_la_nolut_CoutTab)[853 + (iYIsInt & 1)];
                }
            }
            else
            {
                /* Path 3). Here if x=0, y<>NaN, y<>0 */
                dbTmp1 = dX * dX;   /* Tmp1 := +0 */
                if (iSignY)
                {
                    /* Path 3.1). Here if y<0, x=0, y<>NaN  */
                    /* If x=-0, y is negative odd integer   */
                    /* then dR := -Inf                    */
                    /* else dR := +Inf                    */
                    /* Raise DIVZ                           */
                    dR = ((__constant double *) __dpown_la_nolut_CoutTab)[853 + (iYIsInt & iSignX)] / dbTmp1;
                    nRet = 1;
                }
                else
                {
                    /* Path 3.2). Here if y>0, x=0, y<>NaN  */
                    /* If x=-0, y is positive odd integer   */
                    /* then dR := -0                      */
                    /* else dR := +0                      */
                    dR = ((__constant double *) __dpown_la_nolut_CoutTab)[853 + (iYIsInt & iSignX)] * dbTmp1;
                }
            }
        }
        else
        {
            /* Path 2). Here if one of arguments is NaN */
            /* but x<>1, y<>0 */
            /* dR := x + y */
            dR = dX + dY;
        }
    }
    else
    {
        /* Path 1). Here if x=1 or y=0 */
        /* Raise Invalid exception in case when one of arguments is SNaN */
        dbVTmp1 = dX + dY;
        iSign = (((_iml_v2_dp_union_t *) & dbVTmp1)->dwords.hi_dword >> 31);
        dbVTmp2 = ((__constant double *) __dpown_la_nolut_CoutTab)[853];
        (((_iml_v2_dp_union_t *) & dbVTmp2)->dwords.hi_dword =
         (((_iml_v2_dp_union_t *) & dbVTmp2)->dwords.hi_dword & 0x7FFFFFFF) | ((_iml_uint32_t) (iSign) << 31));
        /* dR := 1 */
        dR = dbVTmp2 * dbVTmp2;
    }
    *r = dR;
    return nRet;
}

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc16 = { 0xbfc0eb775ed0d53fuL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc15 = { 0x3fc1ea5c772d0f69uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc14 = { 0xbfc243278b687c88uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc13 = { 0x3fc3ac83f2e91adfuL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc12 = { 0xbfc55569367812bfuL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc11 = { 0x3fc745de6106c97euL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc10 = { 0xbfc99999760c1f82uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc9 = { 0x3fcc71c70a4bb945uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc8 = { 0xbfd00000001076dauL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc7 = { 0x3fd24924924f345duL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc6 = { 0xbfd5555555554e88uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc5 = { 0x3fd9999999999815uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc4l = { 0xbc8A6AF5D88E6C6DuL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc4 = { 0xbfe0000000000000uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc3l = { 0x3c8751507e77d245uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_lc3 = { 0x3fe5555555555555uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_LN2H = { 0x3FE62E42FEFA3800uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_LN2L = { 0x3D2EF35793C76800uL };

static __constant unsigned long __dpown_la_nolut_lTh0 = 0xc086232bdd7abae4uL;
static __constant unsigned long __dpown_la_nolut_lTl0 = 0xbdcee3dde7fd844cuL;
static __constant unsigned long __dpown_la_nolut_lTh1 = 0xc08624f4dcf7348duL;
static __constant unsigned long __dpown_la_nolut_lTl1 = 0xbdceedff94235c6buL;
static __constant unsigned long __dpown_la_nolut_lTh2 = 0xc086266a41f852d7uL;
static __constant unsigned long __dpown_la_nolut_lTl2 = 0xbdcee475cd6a9f39uL;
static __constant unsigned long __dpown_la_nolut_lTh3 = 0xc08627a5f55256f4uL;
static __constant unsigned long __dpown_la_nolut_lTl3 = 0xbdcee71edfaeeae4uL;
static __constant unsigned long __dpown_la_nolut_lTh4 = 0xc08628b76e3a7972uL;
static __constant unsigned long __dpown_la_nolut_lTl4 = 0xbdceeb9abde27626uL;
static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_L2E = { 0x3ff71547652B82FEuL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_Shifter = { 0x43280000000007feuL };

// -log(2)_high
static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_NL2H = { 0xbfe62e42fefa39efuL };

// -log(2)_low
static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_NL2L = { 0xbc7abc9e3b39803fuL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c0 = { 0x3fdffffffffffe76uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c1 = { 0x3fc5555555555462uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c2 = { 0x3fa55555556228ceuL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c3 = { 0x3f811111111ac486uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c4 = { 0x3f56c16b8144bd5buL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c5 = { 0x3f2a019f7560fba3uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c6 = { 0x3efa072e44b58159uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_c7 = { 0x3ec722bccc270959uL };

static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_p_one = { 0x3ff0000000000000uL };

// 2.0^52
static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_two_52 = { 0x4330000000000000uL };

// 2.0^64
static __constant union
{
    unsigned long w;
    unsigned int w32[2];
    int s32[2];
    double f;
} __dpown_la_nolut_two_64 = { 0x43f0000000000000uL };

__attribute__((always_inline))
inline int __ocl_svml_internal_dpown_noLUT (double *pxin, int *pyin, double *pres)
{
    int nRet = 0;
    union
    {
        unsigned long w;
        unsigned int w32[2];
        int s32[2];
        double f;
    } x, y, mant_x, rcp, Th, Tl, lTh01, lTl01, lTh34, lTl34;
    union
    {
        unsigned int w;
        float f;
    } mantf, rcpf;
    double lpoly, R, R2h, R2l, RS, RS2, c3Rh, c3Rl, c3R3h, c3R3l, RS2_h, RS2_l;
    double H, L, R_half, expon_x;
    int iexpon, y_is_odd, y_is_even, ires_scale;
    union
    {
        unsigned long w;
        unsigned int w32[2];
        int s32[2];
        double f;
    } xi, zero, res_special, ylx_h, ylx_l, scale, res;
    union
    {
        unsigned long w;
        unsigned int w32[2];
        int s32[2];
        double f;
    } idx, T, Tlr, dI, dyi, res_scale, ylx_h0, ylx_lh;
    double N, R0, poly, ya;
    int expon32, mask32, mask_h, index;
    unsigned int xa32, sgn_x, expon_corr, iexpon_x, res_sgn = 0;
    double xin = (*pxin);
    double yin = (double) (*pyin);
    x.f = xin;
    y.f = yin;
  POWN_LOG_MAIN:
    // extract exponent(x)
    iexpon_x = x.w32[1] >> 20;
    expon_x = (double) (iexpon_x);
  POWN_LOG_MAIN_CONT:
    // 2^(-3)*mantissa
    mant_x.w32[1] = (x.w32[1] & 0x000fffffu) | 0x3fc00000u;
    mant_x.w32[0] = x.w32[0];
    mantf.f = (float) mant_x.f;
    rcpf.f = 1.0f / (mantf.f);
    // round to rcp to 1+2 mantissa bits
    rcpf.f = SPIRV_OCL_BUILTIN (rint, _f32,) (rcpf.f);
    // table index
    // reduced argument
    rcp.f = (double) rcpf.f;
    R = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (rcp.f, mant_x.f, (-1.0));
    index = (rcpf.w >> (23 - 2)) & 0x7;
    index ^= 4;
    // select -log(rcp) based on index
    lTh01.w = (index & 1) ? __dpown_la_nolut_lTh1 : __dpown_la_nolut_lTh0;
    lTl01.w = (index & 1) ? __dpown_la_nolut_lTl1 : __dpown_la_nolut_lTl0;
    lTh34.w = (index & 1) ? __dpown_la_nolut_lTh3 : __dpown_la_nolut_lTh4;
    lTl34.w = (index & 1) ? __dpown_la_nolut_lTl3 : __dpown_la_nolut_lTl4;
    Th.w = (index < 2) ? lTh01.w : __dpown_la_nolut_lTh2;
    Tl.w = (index < 2) ? lTl01.w : __dpown_la_nolut_lTl2;
    Th.w = (index > 2) ? lTh34.w : Th.w;
    Tl.w = (index > 2) ? lTl34.w : Tl.w;
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_lc16.f, R, __dpown_la_nolut_lc15.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc14.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc13.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc12.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc11.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc10.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc9.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc8.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc7.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc6.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc5.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc4.f);
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, __dpown_la_nolut_lc3l.f);
    // R + 0.5*R^2, high-low
    R_half = 0.5 * R;
    RS = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) ((-R), R_half, R);
    R2h = R - RS;
    R2l = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) ((-R), R_half, R2h);
    // c3*R, high_low
    c3Rh = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_lc3.f, R, 0.0);
    c3Rl = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_lc3.f, R, (-c3Rh));
    lpoly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (lpoly, R, c3Rl);
    // Tl + poly_low + expon*LN2L
    Tl.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) ((-R2l), lpoly, Tl.f);
    Tl.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (expon_x, __dpown_la_nolut_LN2L.f, Tl.f);
    // R + 0.5*R^2 + c3*R^3, high-low
    RS2 = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (c3Rh, R2h, RS);
    c3R3h = RS2 - RS;
    c3R3l = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (c3Rh, R2h, (-c3R3h));
    c3R3l = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) ((-c3Rh), R2l, c3R3l);
    R2l = R2l + c3R3l;
    // Th + expon*LN2H + R + 0.5*R^2 + c3*R^3, high-low
    Th.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (expon_x, __dpown_la_nolut_LN2H.f, Th.f);
    H = Th.f + RS2;
    RS2_h = H - Th.f;
    RS2_l = RS2 - RS2_h;
    R2l = R2l + RS2_l;
    Tl.f = Tl.f + R2l;
    L = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (R2h, lpoly, Tl.f);
    // y*log(x)
    ylx_h0.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (y.f, H, 0.0);
    ylx_l.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (y.f, H, (-ylx_h0.f));
    ylx_l.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (y.f, L, ylx_l.f);
    ylx_h.f = ylx_h0.f + ylx_l.f;
    ylx_lh.f = ylx_h.f - ylx_h0.f;
    ylx_l.f = ylx_l.f - ylx_lh.f;
    // redirect special cases
    iexpon_x--;
    if ((iexpon_x >= 0x7fe) || ((ylx_h.w32[1] & 0x7fffffff) >= 0x4086232B))
        return __dpown_la_nolut_pown_lut_cout (pxin, pyin, pres);
    // x*log2(e) + Shifter
    idx.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (ylx_h.f, __dpown_la_nolut_p_L2E.f, __dpown_la_nolut_p_Shifter.f);
    // x*log2(e), rounded to 1 fractional bit
    N = idx.f - __dpown_la_nolut_p_Shifter.f;
    // bit mask to select "table" value
    mask32 = idx.w32[0] << 31;
    // prepare exponent
    expon32 = idx.w32[0] << (20 + 31 - 32);
    // initial reduced argument
    R0 = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_p_NL2H.f, N, ylx_h.f);
    // reduced argument
    R = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_p_NL2L.f, N, R0);
    R = R + ylx_l.f;
    // start polynomial computation
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_p_c7.f, R, __dpown_la_nolut_p_c6.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c5.f);
    // bit mask to select "table" value
    mask32 = mask32 >> 31;
    // polynomial
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c4.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c3.f);
    // "table" correction
    //mask.w &= 0x000EA09E667F3BCDuL;
    mask_h = mask32 & 0x000EA09E;
    // polynomial
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c2.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c1.f);
    // combine exponent, "table" value
    T.w32[1] = expon32 ^ mask_h;
    T.w32[0] = mask32 & 0x667F3BCD;
    Tlr.w32[1] = 0x3C6E51C5 ^ (mask32 & (0xBC8FD36E ^ 0x3C6E51C5)); // 0xBC93B3EF;
    Tlr.w32[0] = 0;
    // polynomial
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c0.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_one.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, Tlr.f);
    // result
    res.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (T.f, poly, T.f);
    res.w32[1] ^= res_sgn;
    *pres = res.f;
    return nRet;
  POWN_SPECIAL:
    // y==+/-0?
    if (y.f == 0)
    {
        *pres = 1.0;
        return nRet;
    }
    // x==1?
    if (x.f == 1.0)
    {
        res.w32[1] = res_sgn | 0x3ff00000;
        res.w32[0] = 0;
        *pres = res.f;
        return nRet;
    }
    // x is NaN or y is NaN?
    if (((x.w << 1) > 0xffe0000000000000uL) || ((y.w << 1) > 0xffe0000000000000uL))
    {
        *pres = x.f + y.f;
        return nRet;
    }
    // y == -Inf?
    if (y.w == 0xfff0000000000000uL)
    {
        if (x.f == -1.0)
        {
            *pres = 1.0;
            return nRet;
        }
        res.w = (SPIRV_OCL_BUILTIN (fabs, _f64,) (x.f) < 1.0) ? 0x7ff0000000000000uL : 0;
        // **** if(x.f == 0)  raise Div-by_Zero
        nRet = 1;
        *pres = res.f;
        return nRet;
    }
    // y == +Inf?
    if (y.w == 0x7ff0000000000000uL)
    {
        if (x.f == -1.0)
        {
            *pres = 1.0;
            return nRet;
        }
        res.w = (SPIRV_OCL_BUILTIN (fabs, _f64,) (x.f) < 1.0) ? 0 : 0x7ff0000000000000uL;
        *pres = res.f;
        return nRet;
    }
    // x == +Inf?
    if (x.w == 0x7ff0000000000000uL)
    {
        res.w = (y.f < 0) ? 0 : 0x7ff0000000000000uL;
        *pres = res.f;
        return nRet;
    }
    // determine if y is odd/even int
    ya = SPIRV_OCL_BUILTIN (fabs, _f64,) (y.f);
    if (ya >= __dpown_la_nolut_two_52.f)
    {
        if (ya * 0.5 >= __dpown_la_nolut_two_52.f)
        {
            y_is_odd = 0;
            y_is_even = 1;
        }
        else
        {
            y_is_odd = y.w & 1;
            y_is_even = y_is_odd ^ 1;
        }
    }
    else
    {
        y_is_odd = y_is_even = 0;
        dI.f = __dpown_la_nolut_two_52.f + ya;
        dyi.f = dI.f - __dpown_la_nolut_two_52.f;
        if (dyi.f == ya)
        {
            y_is_odd = dI.w32[0] & 1;
            y_is_even = y_is_odd ^ 1;
        }
    }
    // x == -Inf?
    if (x.w == 0xfff0000000000000uL)
    {
        if (y.f < 0)
            res.w = (y_is_odd) ? 0x8000000000000000uL : 0;
        else    // y>0
            res.w = (y_is_odd) ? 0xfff0000000000000uL : 0x7ff0000000000000uL;
        *pres = res.f;
        return nRet;
    }
    // x==0?
    if (x.f == 0)
    {
        if (y.f < 0)
        {
            res.w = 0x7ff0000000000000uL;
            if (y_is_odd)
                res.w |= (x.w & 0x8000000000000000uL);
            // **** raise Div_by_Zero
            nRet = 1;
            *pres = res.f;
            return nRet;
        }
        // else y>0
        res.w = (y_is_odd) ? (x.w & 0x8000000000000000uL) : 0;
        *pres = res.f;
        return nRet;
    }
    // x < 0 ?
    if (x.f < 0)
    {
        if (y_is_odd | y_is_even)
        {
            if (y_is_odd)
                res_sgn = 0x80000000;
            x.w ^= 0x8000000000000000uL;
            goto POWN_LOG_MAIN;
        }
        res.w = 0xfff8000000000000uL;
        // **** raise Invalid
        nRet = 1;
        *pres = res.f;
        return nRet;
    }
    // x denormal?
    iexpon_x++;
    if (iexpon_x == 0)
    {
        x.f *= __dpown_la_nolut_two_64.f;
        iexpon_x = x.w32[1] >> 20;
        expon_x = (double) (iexpon_x) - 64.0;
        goto POWN_LOG_MAIN_CONT;
    }
    // overflow, underflow
    res_scale.f = 1.0;
    if (ylx_h0.f < 0)
    {
        if (ylx_h0.f < -746.0)
        {
            // underflow to 0
            res.w32[1] = res_sgn;
            res.w32[0] = 0;
            // *** set Underflow
            nRet = 4;
            *pres = res.f;
            return nRet;
        }
        ires_scale = -512 * 2;
        res_scale.w = 0x1ff0000000000000uL;
    }
    else
    {
        if (ylx_h0.f >= 710.0)
        {
            // overflow
            res.w32[1] = res_sgn | 0x7ff00000;
            res.w32[0] = 0;
            // *** set Overflow
            nRet = 3;
            *pres = res.f;
            return nRet;
        }
        ires_scale = 512 * 2;
        res_scale.w = 0x5ff0000000000000uL;
    }
    // x*log2(e) + Shifter
    idx.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (ylx_h.f, __dpown_la_nolut_p_L2E.f, __dpown_la_nolut_p_Shifter.f);
    // x*log2(e), rounded to 1 fractional bit
    N = idx.f - __dpown_la_nolut_p_Shifter.f;
    // bit mask to select "table" value
    mask32 = idx.w32[0] << 31;
    idx.w32[0] -= ires_scale;
    // prepare exponent
    expon32 = idx.w32[0] << (20 + 31 - 32);
    // initial reduced argument
    R0 = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_p_NL2H.f, N, ylx_h.f);
    // reduced argument
    R = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_p_NL2L.f, N, R0);
    R = R + ylx_l.f;
    // start polynomial computation
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (__dpown_la_nolut_p_c7.f, R, __dpown_la_nolut_p_c6.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c5.f);
    // bit mask to select "table" value
    mask32 = mask32 >> 31;
    // polynomial
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c4.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c3.f);
    // "table" correction
    //mask.w &= 0x000EA09E667F3BCDuL;
    mask_h = mask32 & 0x000EA09E;
    // polynomial
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c2.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c1.f);
    // combine exponent, "table" value
    T.w32[1] = expon32 ^ mask_h;
    T.w32[0] = mask32 & 0x667F3BCD;
    Tlr.w32[1] = 0x3C6E51C5 ^ (mask32 & (0xBC8FD36E ^ 0x3C6E51C5)); // 0xBC93B3EF;
    Tlr.w32[0] = 0;
    // polynomial
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_c0.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, __dpown_la_nolut_p_one.f);
    poly = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (poly, R, Tlr.f);
    // result
    res.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (T.f, poly, T.f);
    res_scale.w32[1] ^= res_sgn;
    res.f = SPIRV_OCL_BUILTIN (fma, _f64_f64_f64,) (res.f, res_scale.f, 0.0);
    *pres = res.f;
    return nRet;
}

double __ocl_svml_pown_noLUT (double a, int b)
{
    double r;
    __ocl_svml_internal_dpown_noLUT (&a, &b, &r);
    return r;
}
